【MATLAB编程实例练习】-(16)斐波那契数列问题

题目描述:
      Fibonacci数列是这样定义的:
      F(1) = 0,F(2) = 1
      对于任意 i >2: F(i) = F(i-1) + F(i-2).
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。

思路:
      循环生成Fibonacci数,每生成一个,就和输入的N进行比较。

代码:

N = input('请输入N:');
f(1) = 0;
f(2) = 1;
n = 3;
while 1
    f(n) = f(n-1) + f(n-2);
    if f(n) > N
        answer = min(f(n)-N,N-f(n-1));
        break;
    end
    n = n + 1;
end
str = ['最少需要',num2str(answer),'步可以变为Fibonacci数'];
disp(str);

测试:

>> Fibonacci_N
请输入N:10
最少需要2步可以变为Fibonacci数

你可能感兴趣的:(MATLAB编程实例练习)