主题:[讨论]急需帮助,递归求助
微笑着继续
[专家分:0] 发布于 2011-07-09 22:19:00
#include<stdio.h>
void fun(int i)
{if(i>0)
{ fun(i/2);}
printf("%d\n",i);
}
int main()
{fun(10);
return 0;}
求解,我想知道每一行的意思。希望大家帮帮我,谢谢
[fly]谢谢,帮帮我吧[/fly][em2]
回复列表 (共4个回复)
沙发
f34355281 [专家分:50] 发布于 2011-07-10 17:55:00
[em1]打酱油路过,顺便看下,怎么解释呢?
就是调用函数fun当形参i大于0时在调用fun函数,并且形参除2,当形参i为0时就停止调用,并且输出每次除2后形参的值!
主函数里(第一次调用)实参为10调用函数fun,10大于零,(第二次)再调用fun,10变为5;5大于0,(第3次)再调用函数fun,5变为2;在(第4次)调用函数fun,2变为1,2大于0在(第5次)调用函数fun,1变为0;1大于0在(第六次)调用函数fun,0不在调用;输出第六次调用的值0后,在输出第五次调用的1,在输出第四次调用的2,在输出第三次调用的5,在输出第二次调用的10,然后结束程序!
不要问我5除2为什么等于2
板凳
微笑着继续 [专家分:0] 发布于 2011-07-10 18:49:00
谢谢
3 楼
f34355281 [专家分:50] 发布于 2011-07-10 19:13:00
能看懂吗?
4 楼
微笑着继续 [专家分:0] 发布于 2011-07-12 21:39:00
嗯嗯,基本看的懂,我还得研究一下,哈哈。谢谢啦
我来回复