c++有递推公式 f(n)=0.5*f(n-1)+0.7*f(n-2),已知f(0)=1,f(1)=1,求出第n项的值f(n)。
时间: 2023-12-16 19:03:08 浏览: 117
C语言用递归法计算Fibonacci(斐波拉契)数列的第n项。
根据递推公式可得:
f(2) = 0.5*f(1) + 0.7*f(0) = 0.5*1 + 0.7*1 = 1.2
f(3) = 0.5*f(2) + 0.7*f(1) = 0.5*1.2 + 0.7*1 = 1.1
f(4) = 0.5*f(3) + 0.7*f(2) = 0.5*1.1 + 0.7*1.2 = 1.15
f(5) = 0.5*f(4) + 0.7*f(3) = 0.5*1.15 + 0.7*1.1 = 1.125
…
可以看出,每一项的计算都需要用到前面的两项,因此需要使用循环来计算:
def f(n):
if n == 0:
return 1
elif n == 1:
return 1
else:
fn_1 = 1
fn_2 = 1
for i in range(2, n+1):
fn = 0.5*fn_1 + 0.7*fn_2
fn_2 = fn_1
fn_1 = fn
return fn
测试:
print(f(0)) # 输出 1
print(f(1)) # 输出 1
print(f(2)) # 输出 1.2
print(f(3)) # 输出 1.1
print(f(4)) # 输出 1.15
print(f(5)) # 输出 1.125
print(f(6)) # 输出 1.1375
阅读全文