计算前10个斐波纳契数

时间:2017-10-13 15:17:34

标签: matlab fibonacci

我需要在matlab中编写一个计算代码 the first 10 Fibonacci numbers 但是我遇到了一些麻烦。我想到了使用这里定义的公式:

https://www.math.hmc.edu/funfacts/ffiles/10002.4-5.shtml

到目前为止我已经得到了这个

n = 0; 
c = (((1+sqrt(5))/2)^n -((1-sqrt(5))/2)^2)/(sqrt(5));
while (n < 10)
disp(c)
n+1;
end

但正如你可能看到的那样,这是非常错误和不完整的。但我不知道该怎么做。教授希望我们写一个合适的代码,这意味着我不能使用像斐波那契(n)这样的东西。任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:1)

记住斐波那契数字定义为:

fib(n) = fib(n-1) + fib(n-2);

你的公式在计算前10时大量过度杀戮。只需将前2个作为常数设置并使用您所知道的计算其他数据(使用数组计算第3个,你可以计算第4个)。 p>

我会为计算它的递归留下一些伪代码,你应该能够把这个想法翻译成matlab

let fib = [0,1,-1,-1...]
function Fibonacci(n){
  if (fib[n] != -1) return fib[n] // If it exists already, we have it!
  // otherwise, we can calculate it
  // make sure to save the result so we can use it later if needed.
  fib[n] = Fibonacci(n-1) + Fibonacci(n-2);
  return fib[n];
}

答案 1 :(得分:0)

像fibonaacci系列似乎跟在golden ratio之后,正如一些细节here所述。

这用于MATLAB File-exchange code,我写在这里,只是它的本质 -

sqrt5 = sqrt(5);
alpha = (1 + sqrt5)/2;   %// alpha = 1.618... is the golden ratio
fibs  = round( alpha.^n ./ sqrt5 )

您可以为n中的nth号码Fibonacci Series提供一个整数,或者输入数组1:n以获得整个系列。

请注意,此方法仅适用于n = 69

答案 2 :(得分:0)

fib_series = [0,1];
i = 3;
while length(fib_series) < 10
  fib_series(i) = fib_series(i-1) + fib(i-2);
  i = i+1;
end