求帮忙解释下递归

ad456aaa 2011-11-17 03:39:17

# include <stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
int num;

printf("This program calculates factorials.\n");
printf("Enter a value int the range 0-12(q to quit):\n");
while (scanf("%d",&num) == 1)
{
if (num < 0)
printf("No negative numbers,please.\n");
else if (num > 12)
printf("keep input under 13.\n");
else
{
printf("loop:%d factorial = %ld\n",num,fact(num));
printf("recursion: %d factorial = %ld\n",num,rfact(num));
}
printf("Enter a value int the range 0-12(q to quit):\n");
}
printf("Bye.\n");
return 0;
}
long fact(int n) //使用循环求阶乘
{
long ans;

for (ans = 1;n > 1;n--)
ans *= n;
return ans;
}

long rfact(int n) //使用递归求阶乘
{
long ans;

if (n > 0)
ans = n * rfact(n - 1);
else
ans = 1;
return ans;
}
关于递归在怎样调用 加粗的部分调用的是不是rfact函数定义的整个部分呢 还有就是会调用几次 怎样计算它会递归几次啊
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ad456aaa 2011-11-18
  • 打赏
  • 举报
回复
恩 谢谢诸位 我多多练习下
bdmh 2011-11-17
  • 打赏
  • 举报
回复
自己调用自己,将上一次压栈,然后递归,直到满足一定条件后,挨个出栈,结束
aiyaya730 2011-11-17
  • 打赏
  • 举报
回复
递归函数一般总会自己调用自己
而且总会有一个特殊的条件是不再调用自己了

典型的问题是hanoi,自己弄一遍就清楚了
ryfdizuo 2011-11-17
  • 打赏
  • 举报
回复
递归函数 多调试几次就清楚了。

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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