我有一个递归程序。当在函数中使用printf
时,它输出123,当在外面使用时,它输出0123。
#include <stdio.h>
fact(int);
int main()
{
int x=3;
fact(x);
printf("\n");
system("PAUSE");
}
int fact(int y)
{
if (y > 0)
{
fact(y-1);
printf("%d",y);
}
//printf("%d",y);
}
我没有同时使用printf
。这个printf
语句的位置有什么不同?
答案 0 :(得分:1)
由于您的if
条件会查找大于零的值,因此它按预期工作。
答案 1 :(得分:1)
当使用printf
块之外的IF
时,即使y为0也会执行,printf
块内的IF
不是这种情况
答案 2 :(得分:0)
fact(int)由以下序列调用,
事实上(3) - &GT;事实(2)---&GT;事实(1)---&GT;事实(0)
最后一次通话是事实(0)。根据fact(int)的实现,当传入0时,如果在场外使用printf(),则打印0。如果在里面使用printf(),则不打印0。
事实上,当printf()在场外使用时,会传递传递到fact(int)的所有值。
答案 3 :(得分:0)
我会说你自己没有看到答案的一个原因是因为你的代码很草率。以下是一些抱怨:
尝试此练习:使用单个return
和条件赋值编写单行因子函数。