Ke 数是一个整数 10≤n≤99,这样,如果我们以其数字开始斐波那契数列,则该数列包含 n。
例如,47 是一个 Ke 数,因为序列是这样开始的:4,7,11,18,29,47,来到数字本身。
我正在尝试定义递归函数 ke_number,它接受一个两位数整数并检查它是否是一个 Ke 数。 (正确或错误)
我让它像这样工作:
def ke_number(n):
n1 = int(str(n)[0])
n2 = int(str(n)[1])
return n in [fib(i,n1,n2) for i in range(1,100)]
def fib(n, a, b):
if n==0 or n==1:
return b
return fib(n-1, b, a+b)
但正如您所看到的,它不仅仅是一个函数,而是两个函数。 如何将其转换为一个递归函数?
最佳答案
递归解决方案:
def ke_number(n, a = None, b = None):
if a is None:
return ke_number(n, n // 10, n % 10)
if a < n:
return ke_number(n, b, a + b)
return a == n
print(ke_number(47))
print(ke_number(46))
输出:
True # for 47
False # for 46
使用上面的函数,如果你这样做:
for i in range(10, 100):
if ke_number(i):
print(i)
您将获得所有 Ke 数字:
14
19
28
47
61
75
关于python - 该数字属于斐波那契数列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74352892/