返回阶乘C++的递归函数

recursive function that returns factorial C++

本文关键字:递归函数 C++ 阶乘 返回      更新时间:2023-10-16

我正在尝试从C++ Primer Plus书中的以下练习中解决。

定义一个递归函数,该函数接受整数参数并返回 该论点的阶乘。回想一下 3 阶乘,写成 3!, 等于 3 × 2!,依此类推,为 0!定义为 1。一般来说,如果 n 是 大于零,n!= n * (n - 1)!.在程序中测试函数 使用循环允许用户输入各种值 程序报告阶乘。

我编写了进入main()的代码。

#include <iostream>
using namespace std;
int factorial(int n);

int main()
{
int number= 0;
cout<<"Enter a number(0 to quit): ";
while (cin >> number && number! = 0)
{
cout<< "Here is the factorial of the number: "<< factorial (number) << ". n"
"Enter next number(0 to quit): ";
}

return 0;
}

现在我想不出一个合适的递归函数声明。有人可以通过编写最简单的(对于编程新手)来掌握本练习的函数声明来提供帮助吗?

在设计递归算法来计算任何数字的阶乘时,我们必须首先确定基本情况,这是我们可以在没有递归的情况下解决的计算部分。这就是n = 0然后factorial(n) = 1的情况。

这告诉了当n等于0时如何解决问题,但是当n大于0时我们该怎么办?这就是递归情况,或者我们使用递归来解决的问题的一部分。If n > 0, then factorial(n) = n * factorial(n-1).这说明如果 n 大于 0,则 n 的阶乘是n-1的阶乘的 n 倍。

int factorial(int n)
{
if (n == 0)
return 1; // base case
else
return n * factorial(n-1); // recursive case
}

我会做一些类似的事情:

int factorial(int n){
if(n<=0)
return 1;
int num=factorial(n-1);
if(num)
return n*num;
return 0;
}

您可以使用非常短的函数,如下所示,但它与 @superPhreshHackerKid 提供的答案相同

int factorial(int n){
if (n > 0)
return n * factorial(n-1);
return 1;
}

希望对你有帮助