Python 中没有递归的 Fib2 函数
Fib2 function without recursion in Python
我需要帮助来定义 fibanocci 2 函数。 fibanocci 2 函数描述为:
fib2(n) = {0 如果 n <= 0, 1 如果 n = 1, 2 如果 n = 2, ( fib2( n - 1) * fib2( n - 2)) - fib2( n - 3) else}
我们需要迭代定义这个函数。
我尽了最大的努力,但还是写不出有效的代码。
def fib2(n: int) -> int:
if n <= 0:
return 0
elif n == 1:
return 1
elif n == 2:
return 2
else:
n = ((n - 1) * (n - 2) - (n - 3)
return n
a = fib2(7)
print (a)
assert (fib2(7) == 37)
这个 fib2 函数的输出是 26,但它应该是 37。
提前谢谢你
您不能更改参数的值。
请尝试直接 return :
Return ((fb2(n-1)×fb2(n-2))-fb2(n-3))
所以它将作为递归函数工作。
def fibo(n):
current = 0
previous_1 = 1
previous_2 = 0
for i in range(1,n):
current = previous_1 + previous_2
previous_2 = previous_1
previous_1 = current
return current
要迭代进行,最好的方法是将其写在纸上以了解其工作原理。
数学上斐波纳奇是 Fn = Fn-1 + Fn-2
。因此,您可以创建名为 previous_1
和 previous_2
的变量,它们代表 Fn
的元素,您只需在每个 运行.
上更新它们
Fn
是 current
对于迭代版本,您必须使用 for 循环。
只需将前 3 个数字相加即可得到下一个数字。
这是一段代码:
def fib3(n):
a = 0
b = 1
c = 0
for n in range(n):
newc = a+b+c
a = b
b = c
c = newc
return newc
print(fib3(7))
assert (fib3(7) == 37)
我需要帮助来定义 fibanocci 2 函数。 fibanocci 2 函数描述为: fib2(n) = {0 如果 n <= 0, 1 如果 n = 1, 2 如果 n = 2, ( fib2( n - 1) * fib2( n - 2)) - fib2( n - 3) else}
我们需要迭代定义这个函数。 我尽了最大的努力,但还是写不出有效的代码。
def fib2(n: int) -> int:
if n <= 0:
return 0
elif n == 1:
return 1
elif n == 2:
return 2
else:
n = ((n - 1) * (n - 2) - (n - 3)
return n
a = fib2(7)
print (a)
assert (fib2(7) == 37)
这个 fib2 函数的输出是 26,但它应该是 37。 提前谢谢你
您不能更改参数的值。 请尝试直接 return : Return ((fb2(n-1)×fb2(n-2))-fb2(n-3)) 所以它将作为递归函数工作。
def fibo(n):
current = 0
previous_1 = 1
previous_2 = 0
for i in range(1,n):
current = previous_1 + previous_2
previous_2 = previous_1
previous_1 = current
return current
要迭代进行,最好的方法是将其写在纸上以了解其工作原理。
数学上斐波纳奇是 Fn = Fn-1 + Fn-2
。因此,您可以创建名为 previous_1
和 previous_2
的变量,它们代表 Fn
的元素,您只需在每个 运行.
Fn
是 current
对于迭代版本,您必须使用 for 循环。 只需将前 3 个数字相加即可得到下一个数字。
这是一段代码:
def fib3(n):
a = 0
b = 1
c = 0
for n in range(n):
newc = a+b+c
a = b
b = c
c = newc
return newc
print(fib3(7))
assert (fib3(7) == 37)