![]() |
發布時間: 2020-3-8 10:14
正文摘要:#include "REG52.H"fun(int n); int m; void main() { m=fun(4); } fun(int n) { int t; if((n==0)||(n==1))t=3; else t=n*fun(n-1); return t; } 這個變量m=3 |
你需要學習一下c語言基礎,遞歸都沒了解啊 |
stephanie_han 發表于 2020-3-9 05:57 c語言默認init,以前的程序都不嚴謹 |
我比較好奇你編譯的時候有沒有warning,畢竟從來沒有嘗試過定義函數不給返回值類型,一開始我以為如果沒有返回值類型就默認為void,但是后面說有結果輸出,看來是可以這么寫的啊 |
chenzhizhong 發表于 2020-3-8 19:23 C程序是從上往下編譯的,子函數放后面的話就不知道fun()函數,你可以把子函數放主函數前面,或者在主函數里面聲明一下int fun(int n); |
|
chenzhizhong 發表于 2020-3-8 16:33 上面的代碼出現死循環,把子函數放主函數后面就會死循環,放主函數前面就不會,為什么呢? |
tyrl800 發表于 2020-3-8 14:16 上面代碼怎樣改過來呢,編譯一直出錯。。 |
函數遞歸調用,m=72; |
哦,自己發現問題了,是函數再入問題 |
為什么m=3呢?調試t變量看不見 |