重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
第一级递归:n=483,i=n/10=48≠0
创新互联公司专注于企业网络营销推广、网站重做改版、新疆网站定制设计、自适应品牌网站建设、html5、商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新疆等各大城市提供网站开发制作服务。
注意此时先递归调用convert(48),待递归返回再输出当前n的个位数字n%10=3
第二级递归:n=48,i=n/10=4≠0
此时继续递归调用convert(4),待递归返回再输出当前n的个位数字n%10=8
第三级递归:n=4,i=n/10=0
此时递归终止,先输出当前n的个位数字n%10=4
再返回上一级递归输出8,最后返回第一级递归输出3
因此最终输出为:4 8 3
这个很好理解啊,你看看你输入的参数什么就可以了。
你函数的声明是void fuck ( int n ,char o, char t, char th)
第一次调用你是fuck ( n, 'A','B','C');这时,o=A,t=B,th=C,所以输入
printf ("%c %c %c\n",t,o,th);就是BAC,
然后你fuck(n-1,t,o,th);,这时o=原来的t=B,t=原来的o=A,th=C,输出
printf ("%c %c %c\n",t,o,th);就是ABC了如此类推
这句话是不对的。
嵌套是两种结构间的关系,而不是函数间的关系。递归是一个函数调用自身,可以看作是一个函数调用另一个函数中的较特别的例子。
函数嵌套与递归调用的区别函数嵌套是语言特性,递归调用是逻辑思想。
扩展资料:
函数嵌套函数嵌套允许在一个函数中调用另外一个函数。
递归调用而递归是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作。递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。递归最明显的特点就是,自己调用自己。
函数嵌套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。嵌套调用就是某个函数调用另外一个函数,递归调用是一个函数直接或间接的调用自己。
递归有一个堆栈的概念,那就意味着他是一个反理解的过程:就象数学递推一样,你知道第一项,第二项,又知道通项公式,那你就可以知道任何一项。
然后你看代码:fun(0)==0,fun(1)==1;是告诉你一二项。
fun(n)==fun(n-1)+fun(n-2);是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么操作的,那很复杂的,也不需要明白!!!!
可以从数学函数角度理解
对于任意的f(n) 先求f(n-1)和f(n-2)
调用同一个函数,直到n为1或者2为止
比如
f(5)调用f(4) f(3)
分别调用f(3) f(2) f(2) f(1)
其中f(2)和f(1)会直接返回
f(3)会继续调 f(2) f(1)
最终依次返回到最上层
这个是调用顺序,计算顺序相反
最终得出结果