我嘗試編寫一個返回數字總和的遞歸函數。但是,下面的程序似乎沒有辦法。數字的遞歸函數總和R
getSum = function(i) {
if (i < 0) {Print("Please enter a positive number")}
if (i >= 0) {getSum(i - floor(i/10) - i %% 10) + floor(i/10) + i %% 10}
它提供了兩個錯誤:
Error: evaluation nested too deeply: infinite recursion/options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion/
options(expressions=)?
有人能幫助我嗎?
基本調試技術展示:想通過簡單的情況。假設你調用'getSum(1)',會發生什麼? getSum(0)'怎麼樣?我建議你只需要解決這個問題,但是你也可以在你的函數中添加一些'print'語句來幫助你檢查你的工作。 – Gregor
另外,spacepace可以提高代碼的可讀性。 – Gregor
我想我明白了:getSum(0)會最終發生,它會繼續遞歸。然後它仍然不會工作。 – Cardinal