帮助计算机数学项目

时间:2010-12-17 16:06:43

标签: python

我需要帮助制作一个程序,计算给定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()并将计算相同的答案。我应该如何更改我的程序,以便仍然可以计算相同的答案?

2 个答案:

答案 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)

硬编码中的数字将是获得答案而不提供参数的唯一方法,