递归的输出结果

sunner008 2010-08-03 11:00:34
#include <stdio.h>
int fact(int n);
int main(void)
{
int answer,n=4;
printf("まだmain関数にいます。 \n");
answer=fact(n);
printf("main関数に戻ってきました。 \n");
printf("%d! = %d \n", n, answer);
return(0);
}
int fact(int n)
{
int fac;
printf("fac(%d)を実行しています。 \n", n);
if(n <= 1) fac = 1;
else fac = fact(n-1) *n;
printf("fact(%d) %d\n", n, fac);
return fac;
}


这道题的输出结果是什么?谢谢大家了。
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohaohahaha 2010-08-03
  • 打赏
  • 举报
回复
帮顶。
aozhi 2010-08-03
  • 打赏
  • 举报
回复
4L翻译错误。应该是这样的

printf("まだmain関数にいます。 \n"); //还在main函数中
answer=fact(n);
printf("main関数に戻ってきました。 \n"); //已经返回到main函数。
bobo364 2010-08-03
  • 打赏
  • 举报
回复
把鬼子文改成中文,这其实就是一个递归(堆栈)程序的说明,和具体结果
#include <stdio.h>


int fact(int n);


int main(void)
{
int answer,n=4;
printf("目前正在主函数。 \n");
answer=fact(n);
printf("主函数运行完毕。 \n");
printf("%d! = %d \n", n, answer);
system("pause");
return 0;
}


int fact(int n)
{
int fac;//此为一个计数器,记录阶乘每一次计算的的结果
printf("fac(%d)正在运行中。 \n", n);//n从主函数传入的值,从4开始
if(n <= 1)
{
fac = 1;//到1时fac
}
else
{
fac = fact(n-1) *n;//n不为1,的话执行fact(n-1),并与n相乘,记录到fac中
}
printf("fact(%d) %d\n", n, fac);
return fac;
}
sky198306 2010-08-03
  • 打赏
  • 举报
回复
关于main函数

main函数递推结果
Jim_King_2000 2010-08-03
  • 打赏
  • 举报
回复
貌似是求n的阶乘。
ayw215 2010-08-03
  • 打赏
  • 举报
回复
run一下不就知道了么

まだmain関数にいます。
fac(4)を実行しています。
fac(3)を実行しています。
fac(2)を実行しています。
fac(1)を実行しています。
fact(1) 1
fact(2) 2
fact(3) 6
fact(4) 24
main関数に戻ってきました。
4! = 24
请按任意键继续. . .

lz还会日语啊,真厉害

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧