在这个问题上我不能应用我的递归概念
#include<stdio.h>
count(int);
main()
{
int x=4;
count(x);
return 0;
}
count(int n)
{
if(n>0)
{
count(n-1);
printf("%d",n);
count(n-1);
}
}
当我们运行程序时count(4),count(3),count.....count(0)
存储在堆栈中...但是当调用count(0)
并且if
条件为假时...那么控件在哪里?如果有人可以借助显示各种函数调用的图表来解释。
答案 0 :(得分:0)
不需要图表。使用count(0)
时,if
语句失败,count
会立即返回而不执行任何操作。
编辑:感谢Flexo指出原始形式的程序是UB,因为没有告诉声明返回int的函数在没有返回任何内容时会做什么。 (在实践中,我猜测大多数调用约定都是无害的,但当然它仍然是错误的。)
答案 1 :(得分:0)
你可以试试下面这段代码。
#include<stdio.h>
count(int);
int main()
{
int x=4;
count(x);
return 0;
}
int count(int n)
{
if(n>0)
{
printf("%d",n);
return count(n-1);
}
else
{
printf("%d",n);
return n;
}
}