matlab function 请帮忙看看

这个程序为什么会进入死循环,也就是一直运行下去根本不停止。我输入的n=10functionphi=Goldener_Schnitt(n)a(1)=1;a(2)=1;for... 这个程序 为什么会进入死循环,也就是一直运行下去 根本不停止 。我输入的 n=10
function phi=Goldener_Schnitt(n)
a(1)=1;
a(2)=1;
format long
for i= 3:n
a(i)=a(i-1)+a(i-2);
end
while 1

phi=a(i)/a(i-1)
if ((abs(a(i)-a(i-1))) < 0.0001)
break ;
end
end

end
展开
 我来答
蜂窝瓤2
2013-11-28 · TA获得超过1207个赞
知道答主
回答量:63
采纳率:0%
帮助的人:45.2万
展开全部

死循环的原因是判断条件中,i总是等于10,判断的结果不会改变,故运行不到break语句,这是无法退出while 1 语句的直接原因。

从程序的整体来看,while语句并未嵌套在for语句中,造成了while 1中i不可能改变,参考截图如下:

作者的程序结构和逻辑不是很清晰,建议先画出程序流程图,再编写程序。另程序调试中,可以使用调试方法,了解程序中变量变化的情况,诸如设断点、单步运行等方法,以观察程序运行的情况。

个人一点建议,供参考。

追问

您好 能不能给改一下 给个正确的 编程。

 

我是初学者 很多东西都不懂。

 

这个程序 我是希望 它运行到 (phi(i)-phi(i-1))< 0.0001 时 就跳出来不运算了 ,也就是我的n 给的无论多大 比如n=100,

程序都只是运行到(phi(i)-phi(i-1))< 0.0001  。

我改成这样了 还是不能运行。能帮忙改成正确的吗? 谢谢

追答
整体应该是一个while循环,没有for循环
循环退出条件是(phi(i)-phi(i-1))< 0.0001
(while循环的组织方法有多种,采用判断加break的方式不是一个好的形式,建议找本编程的书看一看)
每循环一次让i加1
请按这个思路再试试自己编一下。

很高兴为您解答,w231818为您解答matlab的相关问题,以期共同提高
如果本题有什么不明白可以追问,如果满意记得采纳
如果有其他问题请采纳本题后另发点击向我求助,答题不易,请谅解,谢谢。
祝进步
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式