#include <stdio.h>
int fun (int x)
{
if (x<1)
return(1);
else
printf("%d %d \n", x, fun(x-1));
}
int main()
{ int x,y;
x = 5;
y = fun(x);
printf("\n x = %d f(x) = %d \n", x, y);
return 0;
}
该程序包含一个计算某些数字的递归函数。输出中有些东西我无法理解。 以下链接有输出屏幕截图:
为什么右列(红色圆圈)如图所示?我认为这个专栏将是全部而不是那个。
答案 0 :(得分:2)
因为当x&gt; = 1时函数fun
没有返回值。
5是printf("%d %d \n", x, fun(x-1));
的返回值,因为它输出了5个字符。
答案 1 :(得分:0)
如果x>=1
没有返回任何内容,则在执行到达函数末尾时会导致未定义的行为。这意味着价值可能是任何东西,你偶然得到5个。
6.9.1。 P12:
如果到达终止函数的},则使用函数调用的值 调用者,行为未定义。
在您的示例中使用返回值。
int fun(int x)
{
if (x<1)
return(1);
else
printf("%d %d \n", x, fun(x-1));
return x ;//just return something
}
您可能希望返回与您的功能相关的内容。