gpt4 book ai didi

algorithm - 生成 "own"斐波那契数列

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:39:50 25 4
gpt4 key购买 nike

我有一个不寻常的(我认为)问题。对于给定的数字 F_n(我不知道 n 的值),我必须找到满足 F_{n}=F_{n-1}+F_{n-2} 的数字 F_0、F_1。额外的困难是这个序列应该尽可能长(F_n 的值 n 应该是最高的)并且如果存在不止一个解决方案,我必须采用最小的 F_0。简而言之,我必须生成我的“自己的”斐波那契数列。一些例子:

在:F_n = 10;输出:F_0 = 0; F_1 = 2;

在:F_n = 17;输出:F_0 = 1; F_1 = 5;

在:F_n = 4181;输出:F_0 = 0; F_1 = 1;

我观察到的每个序列(使用“Fibonacci 规则”)F_n 是:

F_n = Fib_n * F_1 + Fib_{n-1} * F_0

其中 Fib_n 是第 n 个斐波那契数。斐波那契数列尤其如此。但我不知道这种观察是否有值(value)。我们不知道 n,我们的任务是找到 F_1、F_0,所以我认为我们一无所获。有什么想法吗?

最佳答案

F n-1 = round(F n/φ)

其中 φ=(√5+1)/2。

证明留给读者作为练习;^P

更新 这是不正确的,回到绘图板。

更新 2 让我们从 Fn 和 Fn-1 向后计算。

Fn-2 = Fn - Fn-1
Fn-3 = Fn-1 - Fn-2 = Fn-1 - (F n - Fn-1) = 2Fn-1 - Fn
Fn-4 = Fn-2 - Fn-3 = (Fn - Fn-1) - (2Fn-1 - Fn) = 2Fn - 3Fn- 1
Fn-5 = Fn-3 - Fn-4 = (2Fn-1 - F n) - (2Fn - 3Fn-1) = 5Fn-1 - 3F
Fn-6 = Fn-4 - Fn-5 = (2Fn - 3Fn-1) - (5Fn-1 - 3Fn) = 5Fn - 8Fn- 1

注意到模式了吗?从真实斐波那契数列和最后两个成员中很容易计算出该数列的任何成员。但是我们只知道最后一个成员,怎么知道最后一个呢?

让我们根据 Fn-1 写下要求 Fi>0。

Fn-2 = Fn - Fn-1> 0 ⇒ Fn-1 < Fn
Fn-3 = 2Fn-1 - Fn> 0 ⇒ Fn-1> F<子>n /2
Fn-4 = 2Fn - 3Fn-1 ⇒ Fn-1 < 2F n/3
Fn-5 = 5Fn-1 - 3Fn ⇒ Fn-1> 3F n/5

因此,我们在 Fn-1 上有一系列以实际斐波那契数列的书面形式表示的边界,每一个都比前一个更紧。仍然可满足的最后一个边界确定对应于最长序列的 Fn-1。如果有多个数字满足最后一个边界,则使用最小或最大的数字,具体取决于序列的长度是偶数还是奇数。

例如,如果 Fn=101,则
101*5/8 < Fn-1 < 101*8/13 ⇒ Fn-1 = 63

之前的(不正确的)解决方案意味着 Fn-1 = 62,这很接近但没有雪茄。

关于algorithm - 生成 "own"斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com