黑马程序员技术交流社区

标题: 关于函数递归的一些理解 [打印本页]

作者: Pythoner    时间: 2015-8-6 23:41
标题: 关于函数递归的一些理解
        首先,楼主是黑马ios双元基础班5期的学员,这两天学到C语言的函数,想到以前学习C语言遇到一个难题----递归,于是顺便查了查资料,加深一下对函数递归的理解和应用。
        先看一个例子:



这个例子的输出结果为
0
1
2
5
10
有些人认为应该输出0,因为当i小于或等于0时递归调用结束,然后执行printf函数打印i的值。
    这种想法是错误的,典型的没有理解递归的含义。printf("%d\n", i);语句是fun函数的一部分,肯定执行一次fun函数,就要打印一行,怎么可能只打印一次呢?所以要搞清楚怎么展开递归函数。展开过程如下:

这样应该就很容易理解了。我们再来看一个应用:不使用任何变量编写strlen函数
    strlen函数的作用是传入一个字符串,返回这个字符串的长度。利用递归编写 int my_strlen(char *strDest);
    这个解决方法有很多种,比如嵌套汇编,不过此处只讨论递归。代码如下:



同样,还有更加简洁的代码:








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2