/*
//计算val的阶乘,即1*2*3...*val
int factorial(int val)
{
if(val>1)
return factorial(val-1)*val;
return 1;
}
练习6.35:
在调用factorial函数时,为什么我们传入的值是val-1而非val--?
答:乘号两侧的表达式的计算顺序未定义。
陷入死循环。
*/
#include "TouWenJian_6.h"
int factorial(int val)
{
if(val>1)
return factorial(val--)*val;
return 1;
}
int main(int argc, char *argv[])
{
// for(int i=1;i<argc;++i)
// cout<<argv[i]<<endl;
cout<<factorial(5)<<endl;
return 0;
}
C++Primer第五版第六章练习6.35
最新推荐文章于 2025-12-06 19:00:36 发布
文章讨论了在C++中,调用递归函数factorial时,使用`val-1`而非`val--`的原因,指出乘号两侧的计算顺序未定义可能导致死循环。作者通过实例演示了这一概念并强调了编程中的细节重要性。
33万+

被折叠的 条评论
为什么被折叠?



