首页 > 其他 > 详细

第一讲 递归与循环1

时间:2015-12-03 00:12:43      阅读:295      评论:0      收藏:0      [点我收藏+]
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,从上往下
 
*/

第一讲 递归与循环1

原文:http://www.cnblogs.com/startnow/p/5014603.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!