階乘順序問題
#include <stdio.h>
int sum(int i)
{
??? int result;
??? if(i<0)
??? {
??????? printf("%s\n","輸入錯誤!");
??????? return 0;
??? }
??? else if(i==0 || i==1)
??? {
??????? result = 1;
??? }
??? else
??? {
??????? result = i*sum(i-1);
??? }
??? printf("%d\n",result);
??? return result;
}
int main()
{
??? int i = 5;
??? printf("和為%d\n",sum(i));
??? return 0;
}
運行結果
1
2
6
24
120
階乘順序為何不是倒著輸出?
2019-10-22
對于遞歸函數,我們是先一步一步的加進去的,所以當我們輸出時應當先從后面輸出。畢竟我們在前面算時都是個函數,有未知數,當到最后后有值了,于是一個一個輸出來。便出現了一個從正著輸出的現象。可以看下一節的圖,很有道理,不行就用編譯器,單步執行。希望能幫你。