下边的小函数结束的条件是什么?

naoiny 2008-04-18 04:22:06
#include <iostream>
using namespace std;

double fact(int n)
{
if (n<=1)
return 1;
return n*fact(n-1);
}

int main ()
{
cout<<fact(5);
getchar();
return 0;
}

程序能够给出正确输出:120 
但我不明白程序是怎样结束的 ,n一直在减少,减到小于零的时候也没有满足结束的条件啊(以为根本就没结束的条件)
但程序为什么会有结果呢?

谢谢你的解答~
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
naoiny 2008-04-20
  • 打赏
  • 举报
回复
谢谢大家的解答~~
Tuzki 2008-04-19
  • 打赏
  • 举报
回复
递归!
fact(5),由于5>1,所以返回值为5*fact(4),同理,fact(4)返回4*fact(3),这样一直下去,直到fact(1)返回1
fact(5)
=5*fact(4)
=5*4*fact(3)
=...
=5*4*3*2*1
lj56456311 2008-04-19
  • 打赏
  • 举报
回复
这是求阶乘的递归函数,当n等于1的时候就return 1,然后依次结束
huang_8228 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 babyvox1999 的回复:]
if (n <=1)
return 1;
[/Quote]

这就是减到小于零的时候结束的条件
babyvox1999 2008-04-18
  • 打赏
  • 举报
回复
if (n <=1)
return 1;
liveforme 2008-04-18
  • 打赏
  • 举报
回复
递归,n在不停的减1,当n=1的时候,就开始return,逐步结束

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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