创建一个递归函数以及一个封闭函数定义

时间:2019-04-05 01:14:46

标签: python-3.x recursion math

此分配的目标是采用底部给出的递归关系,然后在recFunc(n)下创建递归函数,并在nonRecFunc(n)下创建封闭函数定义。封闭函数意味着我们的函数应仅依赖于n,并且其输出应 与递归函数完全匹配。然后,找到n = 15和n = 20的值,并按照以下说明使用它。您可能应该使用特征方程式来解决此问题。

nonRecFunc(20)(除以nonRecFunc(15)的值是什么,四舍五入到最接近的整数。

问题:

  
    
      

用初始条件a_0 = 1和a_1 = 4解决递归关系a_n = 12a_n-1-32a_n-2。

    
  

对于应该如何解决此问题以及如何使用递归来解决此问题,我感到困惑。

def recFunc(n):
    if n == 0:
        return 1
    elif n == 1:
        return 2
    else:
        return recFunc(n - 1) + 6 * recFunc(n - 2)


def nonRecFunc(n):
    return 4/5 * 3 ** n + 1/5 * (-2) ** n


for i in range(0,10):
    print(recFunc(i))
    print(nonRecFunc(i))
    print()

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中提到的,我将递归解决方案留给您。 对于非递归解的更多数学问题,请考虑以下问题:

您有

x_n = a x_(n-1)+ b x_(n-2)

这意味着 x 的变化与 x 大致成正比,即 x_n x_(n-1) 将具有相同的数量级。换句话说,我们正在寻找给定的函数类型

d f(n) / d n f(n)

这是指数级的。所以上面的假设是

x_n = alpha t ^ n + beta s ^ n

(后来,当解决 s t 的动机变得很明确时)从初始值中我们得到

alpha + beta = 1

alpha t + beta s = 2

递归提供

alpha t ^ n + beta s ^ n = a(alpa t ^(n-1)+ beta s ^(n-1))+ b(alpa t ^(n-2)+ beta s ^(n-2))

t ^ 2 alpha t ^(n-2)+ s ^ 2 beta s ^(n-2)= a(t alpa t ^(n-2)+ s beta s ^(n-2 ))+ b(alpa t ^(n-2)+ beta s ^(n-2))

此等式适用于所有 n ,因此您可以导出 t s 的等式。

在上述方程式中加入结果将为您提供非递归解决方案。

尝试重现它,然后执行实际任务。

干杯。