利用递归函数,接收一个非负整数为参数,输出其阶乘值,如果输入的数为负数则输出ERROR。
时间: 2024-09-20 19:17:23 浏览: 67
在Python中,你可以使用递归函数来计算非负整数的阶乘。递归是一种函数调用自己的技术,对于求阶乘特别合适,因为每个数的阶乘都可以通过它前面的数来计算。以下是实现这一功能的代码:
```python
def factorial(n):
# 阶乘的基本情况
if n < 0:
return "ERROR" # 输入负数返回错误信息
elif n == 0 or n == 1:
return 1 # 非零自然数的阶乘都是1
else:
return n * factorial(n - 1) # 递归调用,每次减一
# 测试递归函数
num = int(input("请输入一个非负整数: "))
if num >= 0:
result = factorial(num)
print(f"{num}的阶乘是: {result}")
else:
print("输入无效")
```
这个函数首先检查输入是否小于0,如果是,则直接返回错误提示。接着处理基本情况,当n为0或1时,阶乘为1。对于其他大于1的数值,函数通过递归调用自身计算阶乘。
相关问题
1.编写一个程序,要求读入一个非负整数,然后计算和打印它的阶乘;
要编写一个程序来计算并打印给定非负整数的阶乘,你可以使用递归或循环的方式来实现。这里提供一个用循环的示例,因为它通常更高效且易于理解:
```cpp
#include <iostream>
// 定义阶乘函数
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
} else {
unsigned long long result = 1; // 初始化结果为1
for (int i = 1; i <= n; ++i) {
result *= i; // 每次迭代都将当前数字乘到结果上
}
return result;
}
}
int main() {
int num;
std::cout << "Enter a non-negative integer: ";
std::cin >> num;
if (num < 0) {
std::cerr << "Error: Negative numbers don't have factorials." << std::endl;
} else {
unsigned long long fact = factorial(num);
std::cout << "The factorial of " << num << " is: " << fact << std::endl;
}
return 0;
}
```
在这个程序中,`factorial` 函数接收一个整数参数 `n`,如果 `n` 是0或1,它直接返回1(因为0!和1!等于1)。否则,它初始化一个结果变量为1,然后用一个循环从1迭代到 `n`,每次都将当前数值乘到结果上。
在`main` 函数中,我们首先读取用户的输入,然后检查是否是非负数。如果不是,我们会输出错误信息;如果是非负数,我们就调用 `factorial` 函数并打印结果。
编写一个自定义函数,用来计算N!,利用该函数计算组合数的值,计算公式如下: 组合数C,其中C=m!/n!(m-n)! 编写程序,输入两个正整数m和n,计算并输出组合数的结果。若输入的数据的数据不符合要求(m<n、m或n有负数以及n=0都是不符合要求),则输出Error。
可以使用递归的方式来计算阶乘函数,代码如下:
```python
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
```
然后,我们可以使用阶乘函数来计算组合数,代码如下:
```python
def combination(m, n):
if m < n or m < 0 or n < 0 or n == 0:
return "Error"
else:
return factorial(m) // (factorial(n) * factorial(m-n))
```
这个函数首先检查输入的数据是否符合要求,如果不符合要求则返回 "Error"。如果符合要求,就使用阶乘函数计算组合数的值,并返回结果。
下面是一个例子:
```python
print(combination(5, 2)) # 输出 10
print(combination(4, 5)) # 输出 Error
```
在第一行中,我们计算 5 个元素中选取 2 个的组合数,结果为 10。在第二行中,由于输入的数据不符合要求,因此返回 "Error"。
阅读全文