int sum(int n)
{
if (n==1)
return 1;
else
return sum(n-1)+n;
}
將n-1換為n--和--n的時候結果并不相同,以n賦值為3為例,用以上代碼得到的值為6,n--則會報錯,--n得到了4.我知道n--為先用后減,--n為先減后用,但為什么debug的時候,n--的情況蝦每一次的n在return的時候均為3呢?為什么return的運算式中有n結果n沒有視為被呼叫呢?
uj5u.com熱心網友回復:
擦,我寫了十幾年C++代碼,沒看懂。實際作業中絕對不要寫出這樣的代碼。
uj5u.com熱心網友回復:
嗯,就是感覺這的原理不太明白,DEBUG的時候云里霧里的
uj5u.com熱心網友回復:
return sum(n-1)+n;這句里,這里有個概念理解偏差了,假設n=3,n-1=3-1=2,這時n的值仍然為3,這句執行的就是 return sum(2)+3;。
如果把sum(n-1)更改為sum(--n)或sum(n--),--是對n自身的操作,--n一次,n=n-1,n值就少1 。
假設n=3時,執行--n ,相當于n=n-1,這時n的值就為2了,這句就成了
return sum(2)+2; ,以此類推,得 1+1+2=4。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278598.html
標籤:新手樂園
上一篇:想做個游戲選單.創建選單點擊圖示不知如何實作.請指教.
下一篇:求助大佬,究竟是哪里出了問題?
