我需要帮助制作一个程序,计算给定x和正整数n的1 + x + x ^ 2 + ... + x ^ n并用它来计算(1 + x + x ^ 2 + ... + x ^ 10)(1 + x ^ 2 + x ^ 2 ... + x ^ 10)x = 100
到目前为止我已经
了def myfunc(x, n, step):
if n > 0:
return x**n + myfunc(x, n - step, step)
return 1 #In case n is 0
然后我会使用myfunc(100,10,1)* myfunc(100,10,2)来得到答案。 但是,我最近被告知该函数不应包含任何变量,并且应该在不添加任何变量的情况下计算答案。因此,例如,它将是myfunc()并将计算相同的答案。我应该如何更改我的程序,以便仍然可以计算相同的答案?
答案 0 :(得分:6)
提示,由于存在“函数式编程”标记,我认为它是递归练习:
1 + x + x**2 + ... + x**n = 1 + x * (1 + x + ... + x**(n-1))
您只需要n次乘法而不需要取幂来计算此多项式。这被称为 Horner计划。请注意,此公式也可以在for循环中实现:尝试使用笔和纸计算1 + ... + x ^ n的值,仅使用n次乘法并推导算法。
另一个提示,取决于您的老师/顾问/妈妈想要的内容:
1 + x + ... + x**n = (x**(n+1) - 1) / (x - 1).
答案 1 :(得分:0)
def calc(x, n, step):
if n > 0:
return x**n + calc(x, n - step, step)
return 1 #In case n is 0
def myfunc()
return calc(100,10,1)*calc(100,10,2)
硬编码中的数字将是获得答案而不提供参数的唯一方法,