python - 该数字属于斐波那契数列吗?

标签 python function recursion

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)

但正如您所看到的,它不仅仅是一个函数,而是两个函数。 如何将其转换为一个递归函数?

最佳答案

递归解决方案:

Try it online!

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

使用上面的函数,如果你这样做:

Try it online!

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/

相关文章:

function - 如何在delphi中不同调用自定义函数记录struct参数?

Java递归方法一次打印字符串中的一个单词而不循环

python - pandas 中按组的值计数

python - Keras:构建与给定张量相同批量大小的完整张量

function - 为什么函数调用被称为 "function call"?

java - 实现一个如果所有参数都在范围内则返回 true 的方法

c - 如何使用递归删除数组中的相邻重复项?

使用docker进行Python远程调试

javascript - 单击 html 按钮时使用 javascript 将 json 数据发送到托管的 python Flask api,并在 HTML 标签上打印 API 的响应

c++ - 如何使用 RegLoadKey 函数从默认用户加载 NTUSER.DAT 文件?