你们可能都知道斐波纳契序列:
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
fibonacci(0)=0
fibonacci(1)=1
您的任务尽可能简单:
N
计算fibonacci(n)
但这是一个转折:
N
等。什么?
fibonacci(1)=fibonacci(0)+fibonacci(-1)
所以
fibonacci(-1)=1
和
fibonacci(-2)=fibonacci(0)-fibonacci(1)=-1
等等..。
测试案例(S)在CSV:
-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8
34;-21;13;-8;5;-3;2;-1;1;0;1;1;2;3;5;8;13;21
提示:
n<0和n&1==0: fibonacci(n)=fibonacci(abs(n))*-1
发布于 2016-12-31 12:57:07
Fibonacci
是的,这个内置函数支持负数.
发布于 2016-12-31 10:54:24
@(n)([1,1;1,0]^n)(2)
这利用了fibonacci序列f(n)
可以编写为(这应该是矩阵向量表示法)的事实:
递归地:
[f(n+1)] = [1 1] * [f(n) ]
[f(n) ] [1 0] [f(n-1)]
明文规定:
[f(n+1)] = [1 1] ^n * [1]
[f(n) ] [1 0] [0]
这意味着,该矩阵的右上角项到n
的幂值是我们正在寻找的值f(n)
。显然,我们也可以反演这个矩阵,因为它有满秩,并且这个关系仍然描述相同的递推关系。这意味着它也适用于负输入。
发布于 2016-12-31 16:06:26
fib
支持正数和负数。
在极大值在线上试用(粘贴)
https://codegolf.stackexchange.com/questions/105183
复制相似问题