【发布时间】:2020-07-04 00:13:25
【问题描述】:
背景
对于在线编码活动,我被要求创建一个函数,如果斐波那契数列中任意两个连续数字的乘积等于该数字,则该函数取值并返回 true1支持>.
示例
一个例子是 5895,在斐波那契数列中没有两个数字与它相乘,但最接近它但大于它的两个数字是 89 和 144,所以你会返回 [89,144, False]。
问题
但我遇到了一个问题:我的函数不适用于数字 1 和 0。您可以看到斐波那契数列中的数字都乘以这两个值,但我的函数没有返回任何值。
问题
有人解决了吗?
def productFib(prod):
num = [0]
n1 = 0
n2 = 1
while max(num) < prod:
nth = n1 + n2
n1 = n2
n2 = nth
num.append(n1)
q = 0
w = 1
while w+1 < len(num):
for nums in num:
if num[q] * num[w] == prod:
return [num[q], num[w], True]
if num[q] * num[w] > prod:
return [num[q], num[w], False]
q += 1
w += 1
1. 更多:如果两个连续的数字确实乘以目标数字您将返回这两个数字和布尔值True (num1, num2, True)。如果没有两个数字与目标数字相乘,您将返回斐波那契数列中与目标数字相乘的最接近数字的两个连续数字,数字必须大于目标数字,并且必须返回布尔值False(num1, num2, False)。
【问题讨论】:
标签: python python-3.x function fibonacci