主题:[讨论]递归求解,谢谢。急需帮助
微笑着继续
[专家分:0] 发布于 2011-07-09 22:29: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]
回复列表 (共2个回复)
沙发
f34355281 [专家分:50] 发布于 2011-07-10 17:36: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!
板凳
abcwuhang [专家分:1840] 发布于 2011-07-14 11:23:00
..估计他想编个约去2这个约数的程序。。不过好像类型有问题、。?C++格式检查很宽松呢。。
我来回复