python进阶练习题:Zeckendorf表示【难度:2级】:

斐波那契数是’F(0)= 0,F(1)= 1F(N)= F(N-1)+ F(N-2)为``N> = 2` .接下来的5个值是


F(2)= 1
F(3)= 2
F(4)= 3
F(5)= 5
F(6)= 8

每一个正整数可以写成Fibonacci数的总和.例如,10 = 8 + 2 = 5 + 3 + 2 = 3 + 3 + 2 + 2.显然,这表示是不是唯一的.它成为唯一的,如果我们排除* * 连续Fibonacci数. (这是齐肯多夫定理,首先由Lekkerkerker于1952年证明)在上述的例子中,这排除最后两个表示(包含连续斐波那契数F(4)= 3F(3)= 2)和我们留下与* Zeckendorf表示*10 = 8 + 2.

编写返回给定的整数N的Zeckendorf表示为斐波那契数的递减顺序列表的功能. (返回空列表用于N = 0NoneN.)

提示:贪!

脚注:该Zeckendorf表示被紧密地连接到所述斐波那契编码,见[齐肯多夫定理(https://en.wikipedia/wiki/Zeckendorf%27s_theorem).

编程目标:

def Zeckendorf_rep(n):
    """Return Zeckendorf representation of `n` as decreasing list of Fibonacci numbers summing up to `n`."""
    return [n]


测试样例:

test.assert_equals(Zeckendorf_rep(10), [8, 2])
test.assert_equals(Zeckendorf_rep(100), [89, 8, 3])


最佳答案(多种解法):

点击查看答案

更多关联题目:

python高级练习题:下一个较高值#3【难度:4级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶

交流讨论:

景越Python基础训练营QQ群

欢迎各位同学加群讨论,一起学习,共同成长!

免责申明:

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/zeckendorf-representation

更多推荐

python进阶练习题:Zeckendorf表示【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶