编写一个自定义的递归函数fun(n),该函数的功能是求整数n的阶乘,在主函数main中调用此自定义函数,求解1!+2!+3!+......n!,运行时n由用户从键盘输入,如果输入的不是整数,则屏幕输出“输入非法!请重新输入!”
时间: 2023-10-04 20:08:50 浏览: 64
以下是Python的实现:
```python
def fun(n):
if n == 1:
return 1
else:
return n * fun(n-1)
while True:
try:
n = int(input("请输入一个正整数:"))
if n < 0:
print("输入非法,请重新输入!")
continue
else:
sum = 0
for i in range(1, n+1):
sum += fun(i)
print("1!+2!+3!+...+{}! = {}".format(n, sum))
break
except ValueError:
print("输入非法,请重新输入!")
```
首先定义了一个递归函数`fun(n)`,用于求整数n的阶乘,然后在主函数`main`中通过循环获取用户输入的正整数n,并计算1!+2!+3!+...+n!的结果。如果用户输入的不是整数,则捕获`ValueError`异常并输出提示信息。注意,当用户输入的n小于0时也属于非法输入,需要进行判断和提示。
相关问题
用c编写编写一个自定义的递归函数fun(n),该函数的功能是求整数n的阶乘,在主函数main中调用此自定义函数,求解1!+2!+3!+......n!,运行时n由用户从键盘输入,如果输入的不是整数,则屏幕输出“输入非法!请重新输入!”
好的,以下是你需要的C代码:
```
#include <stdio.h>
int fun(int n) {
if (n == 1) { // 递归结束条件
return 1;
} else {
return n * fun(n-1); // 递归调用
}
}
int main() {
int n, i, sum = 0;
printf("请输入一个正整数n:");
if (scanf("%d", &n) != 1 || n <= 0) { // 判断输入是否合法
printf("输入非法!请重新输入!\n");
return 0;
}
for (i = 1; i <= n; i++) {
sum += fun(i); // 求1!+2!+3!+......n!
}
printf("%d的阶乘为:%d\n", n, fun(n));
printf("1!+2!+3!+......%d!的和为:%d\n", n, sum);
return 0;
}
```
这段代码中的`fun`函数是一个递归函数,用于求整数n的阶乘。在主函数`main`中,我们通过循环求出了1!+2!+3!+......n!的和,并输出了结果。
在输入n之前,我们先通过`scanf`函数判断输入是否合法。如果输入的不是整数或者小于等于0,就会输出“输入非法!请重新输入!”并结束程序。
编写一个C语言程序,实现编写一个自定义的递归函数fun(n),该函数的功能是求整数n的阶乘,在主函数main中调用此自定义函数,求解1!+2!+3!+......n!,运行时n由用户从键盘输入,如果输入的不是整数,则屏幕输出“输入非法!请重新输入!”
以下是实现该功能的C语言程序:
```c
#include <stdio.h>
long long fun(int n); // 自定义递归函数
int main() {
int n;
long long sum = 0;
printf("请输入一个整数n:");
if (scanf("%d", &n) != 1) { // 判断输入是否为整数
printf("输入非法!请重新输入!\n");
return 0;
}
if (n < 0) { // 判断输入是否为负数
printf("输入非法!请重新输入!\n");
return 0;
}
for (int i = 1; i <= n; i++) {
sum += fun(i);
}
printf("1!+2!+3!+...+%d!的和为%lld\n", n, sum);
return 0;
}
long long fun(int n) {
if (n == 0) {
return 1;
} else {
return n * fun(n - 1);
}
}
```
程序运行时,会要求用户输入一个整数n,如果输入的不是整数,则会输出“输入非法!请重新输入!”;如果输入的是负数,则同样会输出“输入非法!请重新输入!”。如果输入的是正整数,则会计算出1!+2!+3!+...+n!的和并输出。其中,递归函数fun(n)的作用是计算n的阶乘。
阅读全文