题目:补充程序,编写函数fun,求Sn=a+aa+aaa+……+aa…a之值, 其a中代表1到9中的一个数字。 要求:采用递归算法 例如:a代表2,则求2+22+222+2222+22222(此时n=5),a和n由 键盘输入。def fun(n,a): #**********Program********** #********** End ********** def main(): print("【请连续三次计算公式的值:】") for n in range(3): print("【第%d次:】" %(n+1)) a=int(input("【请输入 1-10 之间的数字a:】")) n=int(input("【请输入数字的个数n:】")) sum=0 for i in range(1,n+1): sum=sum+fun(i,a) print("【sum=】",sum) if __name__ == '__main__': main()
时间: 2023-07-23 07:02:15 浏览: 209
def fun(n, a):
if n == 1:
return a
else:
return a + fun(n-1, a*10)
def main():
print("【请连续三次计算公式的值:】")
for _ in range(3):
print("【第%d次:】" % (_+1))
a = int(input("【请输入 1-10 之间的数字a:】"))
n = int(input("【请输入数字的个数n:】"))
total_sum = 0
for i in range(1, n+1):
total_sum += fun(i, a)
print("【sum=】", total_sum)
if __name__ == '__main__':
main()
在函数fun中,使用递归算法实现了对Sn的求解。当n为1时,直接返回a;当n大于1时,返回a加上fun(n-1, a*10)的值,其中a*10是为了实现将a拼接成多位数。在主函数main中,根据用户输入的a和n,分别调用fun函数计算每一项的值,并累加到total_sum中,最后输出结果。
阅读全文