|
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到1,从下往上funb()就是从1到10,从上往下*/ |
原文:http://www.cnblogs.com/startnow/p/5014603.html