利用递归函数,接收一个非负整数为参数,输出其阶乘值,如果输入的数为负数则输出ERROR。
时间: 2024-09-20 07:17:23 浏览: 48
在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的数值,函数通过递归调用自身计算阶乘。
相关问题
编写一个自定义函数,用来计算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"。
用递归函数求n的阶乘
以下是两种用递归函数求n的阶乘的例子:
引用中的C语言代码实现:
```c
#include <stdio.h>
//递归求n的阶乘
int factorial(long n) {
if (n <= 1) { //0,1的阶乘为1
return 1;
} else {
long m = n * factorial(n - 1); //递归
return m;
}
}
int main() {
int n = 0;
long ret = 0;
printf("请输入一个数:");
scanf("%d", &n);
ret = factorial(n);
printf("此数的阶乘为:%d\n", ret);
return 0;
}
```
引用中的C语言代码实现:
```c
#include <stdio.h>
int fac(int n); //声明函数
int main() {
int n, y; //定义变量
printf("请输入一个整数:"); //提示输入
scanf("%d", &n); //输入要求阶乘的数
y = fac(n);
printf("%d! = %d", n, y);
return 0;
}
int fac(int n) { //定义fac函数
int f;
if (n < 0) {
printf("data error!"); //负数没有阶乘
} else if (n == 0 || n == 1) {
f = 1; //0和1的阶乘都是1
} else {
f = n * fac(n - 1); //当n>1时,n! = n*(n-1)
}
return f;
}
```
阅读全文