使用c++利用函数的递归调用,输入一个正整数,系统会计算出这个正整数的阶乘。
时间: 2024-03-20 16:41:54 浏览: 111
好的,这个问题很简单,可以使用递归来实现阶乘的计算。下面是C++代码示例:
```c++
#include <iostream>
using namespace std;
int factorial(int n)
{
if (n == 1)
return 1;
else
return n * factorial(n-1);
}
int main()
{
int n;
cout << "Enter a positive integer: ";
cin >> n;
cout << "Factorial of " << n << " is " << factorial(n);
return 0;
}
```
这段代码中,我们定义了一个 `factorial` 函数,它接收一个正整数参数 `n`,并使用递归调用自身来计算 `n` 的阶乘。如果 `n` 等于 1,递归终止并返回 1;否则,函数返回 `n * factorial(n-1)`。
在 `main` 函数中,我们首先读入一个正整数 `n`,然后调用 `factorial` 函数计算 `n` 的阶乘,并输出结果。
相关问题
用c++语言设计一个阶乘类recursion,重新调用运算符,计算一个正整数的阶乘
以下是用C语言设计的一个阶乘类递归函数,可以计算一个正整数的阶乘:
```c
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n = 5;
int result = factorial(n);
printf("%d! = %d", n, result);
return 0;
}
```
这个程序的输出应该是 "5! = 120"。
输入一个正整数n的值(n不超过20),编程输出n!(n的阶乘)。程序中的整数请定义成long long型。请定义递归函数计算阶乘
以下是递归函数计算阶乘的代码:
```c++
#include <iostream>
using namespace std;
long long factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
cin >> n;
cout << factorial(n) << endl;
return 0;
}
```
解释:
- 首先定义了一个递归函数`factorial`,它接受一个整数参数`n`,返回`n!`的值。
- 如果`n`等于0,那么`n!`就是1,直接返回1即可。
- 否则,`n!`等于`n`乘以`(n-1)!`,所以递归调用`factorial(n-1)`来计算`(n-1)!`,然后将结果乘以`n`即可。
- 在`main`函数中,先读入一个整数`n`,然后调用`factorial(n)`来计算`n!`的值,并输出结果。
注意,由于阶乘的结果可能非常大,所以需要使用`long long`类型来存储结果。如果使用`int`类型,可能会导致计算结果溢出,从而得到错误的结果。
阅读全文