返回阶乘C++的递归函数
recursive function that returns factorial C++
我正在尝试从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;
}
希望对你有帮助
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何在Elixir中调用递归函数并行
- 递归函数有效,但无法记忆
- 为什么我的递归函数按降序打印,然后按升序打印?
- 为什么递归函数的最终输出是 5?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 如何将记忆应用于此递归函数?
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 无穷大而循环时具有递归函数
- 即使没有调用这个递归函数,它是如何工作的?
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 此递归函数的每次迭代的值存储在哪里?
- 可以清除递归函数中的变量吗?
- 如何在递归函数调用中返回当前函数值
- 递归函数 c++ 的复杂性
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 任何人都可以查明我的递归函数中的错误吗?
- 递归函数的返回类型推导
- 递归函数调用在后台工作
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数