测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A46174. (项目情境)递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用来解决比较复杂的问题。为求解规模为N 的问题,设法将它分解成规模较小的问题,从小问题的解容易构造出大问题的解,并且这些规模问题较小的问题也能采用同样的分解方法,分解成规模更小的问题,并能从这些更小问题的解构造出规模较大问题的解。一般情况下,规模 N=1 时,问题的解是已知的。已知:从1 到 n 的连续自然数相乘的积、叫做阶…

填空题 中等

题目描述

(项目情境)递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用

来解决比较复杂的问题。为求解规模为N 的问题,设法将它分解成规模较小的问题,从小

问题的解容易构造出大问题的解,并且这些规模问题较小的问题也能采用同样的分解方

法,分解成规模更小的问题,并能从这些更小问题的解构造出规模较大问题的解。一般情

况下,规模 N=1 时,问题的解是已知的。已知:从1 到 n 的连续自然数相乘的积、叫做阶

乘、用符号 n!表示。如 5!=1×2×3×4×5,规定 0!=1。我们用递归算法可以较容易求 n 的

阶乘。求 n 的阶乘算法可以描述如下:

n!=n*(n-1)! (n-1)!=(n-1)*(n-2)! (n-2)!=(n-2)*(n-3)!

2!=2*1! 1!=0! 0!=1

如果把 n!写成函数形式,即 f(n),f(n)=n*f(n-1)。如 f(5)就是表示 5!,求 5!的过程可以写成

如下形式:

f(5)=5*f(4) f(4)=4*f(3) f(3)=3*f(2) f(2)=2*f(1) f(1)=1

(问题求解)在 python 中用递归算法求 1!+2!+……+n!(n 的值为整数,从键盘输

入)。请编写合适的python程序完整。


参考答案

def f(n): if n==0: return 1 else: return n*f(n-1) s=0 n=int(input("请输入 n:")) for i in range(1,n+1): s=s+f(i) print(s)
上一题 下一题