首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fibonacci产品

Fibonacci产品
EN

Code Golf用户
提问于 2016-05-13 09:44:59
回答 6查看 2K关注 0票数 14

您可以将大于0的数字分解为正Fibonacci数的唯一和。在这个问题中,我们通过反复减去最大可能的正Fibonacci数来做到这一点。例如:

代码语言:javascript
复制
1 = 1
2 = 2
3 = 3
4 = 3 + 1
12 = 8 + 3 + 1
13 = 13
100 = 89 + 8 + 3

现在,我将Fibonacci乘积称为与上面相同的列表,但是加法被乘法所取代。例如,f(100) = 89 \times 8 \times 3 = 2136

编写给定正整数n的程序或函数,返回该数字的Fibonacci乘积。

测试案例:

代码语言:javascript
复制
1: 1
2: 2
3: 3
4: 3
5: 5
6: 5
7: 10
8: 8
9: 8
42: 272
1000: 12831
12345: 138481852236
EN

回答 6

Code Golf用户

发布于 2016-05-13 10:15:46

Python,54字节

代码语言:javascript
复制
f=lambda n,a=1,b=1:n<1or b>n and a*f(n-a)or f(n,b,a+b)

只是一些很好的老递归。

票数 9
EN

Code Golf用户

发布于 2020-12-01 20:37:39

果冻,10字节

代码语言:javascript
复制
ŒṗḟÐḟÆḞ€ṪP

在网上试试!

n > 60超时

是如何工作的

代码语言:javascript
复制
ŒṗḟÐḟÆḞ€ṪP - Main link. Takes n on the left
Œṗ         - Integer partitions of n
     ÆḞ€   - First n Fibonacci numbers
   Ðḟ      - Keep the partitions p which yield an empty list under:
  ḟ        -   Remove all elements of p which are in the first n Fibonacci numbers
        Ṫ  - Take the last element
         P - Product
票数 2
EN

Code Golf用户

发布于 2016-05-13 10:01:01

Pyth,28字节

代码语言:javascript
复制
K1WQJ0 .WgQH+Z~JZ1=*KJ=-QJ;K

我想它还可以打得更远.

在网上试试!

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/79854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档