永发信息网

c语言 递归函数解释

答案:3  悬赏:0  手机版
解决时间 2021-03-05 12:16
  • 提问者网友:你给我的爱
  • 2021-03-04 11:49
#include//递归函数
void ttor(int n)
{
if(n)
{
ttor(n/2);
printf("%d",n%2);//为什么在'}'里面,而不是再外面,没看懂
}
}
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n)
ttor(n);//调用函数
else
putchar('0');
putchar('\n');
}
}
求解释,把整个跑的过程解释一下,越详细越好!谢了
最佳答案
  • 五星知识达人网友:荒野風
  • 2021-01-08 11:14
假设n=9
1判断n=9非0,把n=9压入栈中,执行ttor(4);栈中为9
2判断n=4非0,把n=4压入栈中,执行ttor(2);栈中为9,4
3判断n=2非0,把n=2压入栈中,执行ttor(1);栈中为9,4,2
4判断n=1非0,把n=1压入栈中,执行ttor(0);栈中为9,4,2,1
5判断n=0不满足条件,函数结束
6从栈中取出n=1,执行ttor(1)的剩余部分,输出1
7从栈中取出n=2,执行ttor(2)的剩余部分,输出0
8从栈中取出n=4,执行ttor(4)的剩余部分,输出0
9从栈中取出n=9,执行ttor(9)的剩余部分,输出1
全部回答
  • 1楼网友:渡鹤影
  • 2019-05-27 23:37
#include int sum(int n) { return n > 1 ? n + sum(n - 2) : 1; } int main() { printf("%d\n", sum(199)); return 0; }
  • 2楼网友:渊鱼
  • 2019-10-02 03:57
同意楼上的。 说得详细点,当程序每次走到ttor(n/2)时,就会一直循环执行这行代码,直到n/2等于0时才结束,这个时候才会去由内向外一步步执行printf函数,如果printf函数放在‘}’外面,就相当于当n/2等于0时虽然循环结束了,但他还会去打印一个0出来。就相当于在二进制数前面多加了个0。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯