第一讲 递归与循环1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/** @Author: SHUAI* @Date: 2015-12-02 21:13:30*//* 理论上,任何循环都可以重写为递归形式 有时候,为栈限制,需要'尾递归' java不支持尾递归 有些语言没有循环语句,只能使用递归(Lisp等) 改为递归的关键是发现逻辑"相似性" 不要忘记递归"出口"*/#include <stdio.h>void funa(int n) { if (n > 0) funa(n - 1); printf("%d\n", n);}void funb(int n) { printf("%d\n", n); if (n > 0) funb(n - 1);}int main() { funa(10); printf("\n"); funb(10); return 0;}/*笔记====================funa()先调用自身,所以显示10先入栈,逐次9,8,7,...1然后出口,不在递归调用,逐个出栈。funa()和funb()的顺序递归调用逐个插入在什么位置。funa()就是从10到0,从下往上funb()就是从10到0,从上往下*/ |

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/** @Author: SHUAI* @Date: 2015-12-03 17:13:08*/#include <stdio.h>void fun(int begin, int end) { printf("%d\n", begin); if (begin < end) fun(begin + 1, end);}int main(void) { fun(2, 6); return 0;} |

=============注===============
部分叙述来自于蓝桥杯讲解视频。
本文来自博客园,作者:一支小白,转载请注明原文链接:https://www.cnblogs.com/startnow/p/5014603.html

浙公网安备 33010602011771号