回 帖 发 新 帖 刷新版面

主题:[讨论]急需帮助,递归求助

#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个回复)

沙发

[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

板凳

谢谢

3 楼

能看懂吗?

4 楼


嗯嗯,基本看的懂,我还得研究一下,哈哈。谢谢啦

我来回复

您尚未登录,请登录后再回复。点此登录或注册