我需要使用matlab编写代码来计算前10个斐波纳契数。
用于计算斐波那契数的公式为
f(n)= f(n-1)+ f(n-2)
知道
f(0)= 1和f(1)= 1
我写的简单代码是
f(0) = 1;
f(1) = 1;
for i = 2 : 10
f(i) = f(i-1) + f(i-2);
str = [num2str(f(i))];
disp(str)
end
Run Code Online (Sandbox Code Playgroud)
这段代码在第1行中给了我错误消息:
尝试访问f(0); 索引必须为正整数或逻辑。
另一方面,当我将代码修改为
f(1) = 1;
f(2) = 2;
for i = 3 : 10
f(i) = f(i-1) + f(i-2);
str = [num2str(f(i))];
disp(str)
end
Run Code Online (Sandbox Code Playgroud)
这很好。
但是我需要它来启动并显示f(0)中的数字。
您能告诉我代码有什么问题吗?
您可以使用Binet的公式非递归地计算它们:
n = 1:10;
r = sqrt(5);
phi = (1+r)/2;
psi = (1-r)/2;
f = (phi.^n - psi.^n)./r;
Run Code Online (Sandbox Code Playgroud)