此分配的目标是采用底部给出的递归关系,然后在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()
答案 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 的等式。
在上述方程式中加入结果将为您提供非递归解决方案。
尝试重现它,然后执行实际任务。
干杯。