以下只是一個簡單的例子來概括和說明我遇到的問題。在matlab中分解出遞歸函數調用
如果我有像下面這樣的函數:
function newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6)
disp(initialguess); return
elseif abs(ht) > 10^6
disp('Fix Guess'); return
end
newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
的唯一方法(即我所知道的),可以退出是通過使用這些return語句的。但是,我想將這個類的函數的輸出分配給基礎工作空間中的變量。我想要做一些事情,如:
function out = newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6)
out = initialguess; return
elseif abs(ht) > 10^6
disp('Fix Guess'); return
end
newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
這不工作,return
被分配防止了。
Output argument "out" (and maybe others) not assigned
我有一個解決方案的想法是使用全局或evalin
。但是,有沒有更簡單的方法,我錯過了。我只是想將這種風格的函數的輸出傳遞迴基礎工作空間?
一個測試用例,以防萬一:
[email protected](x) -x-cos(x); [email protected](x) sin(x)-1; initialguess=1;
感謝您的時間。
嗯,我是個白癡。這只是一個忘記最後作業的例子:
function out = newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6) %Tolerance
out = initialguess; return
elseif abs(ht) > 10^6
out=0; return
end
out = newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
感謝您的快速幫助!