1樓:匿名使用者
額。。你這個可能是 return sum*i+jc(++i);有問題。。
先會執行++i再執行sum*i所以會少一個。。好像與編譯器有關。。我在vc++上執行沒問題,但是以前在linux上好像不行。。
2樓:匿名使用者
不妨把你的程式修改如下:
#include
int i=1,sum=1;
void main()
}int jc(int x) //計算x!的值
3樓:
你函式的引數沒有用上 。也就是說,你的主函式裡a等於10與等於10000是一樣的結果。過有關於++i和i++的區別是這樣的:
前邊是連加在前,當然先算加號後賦值,後者是連加在後,當然是先用舊值,後計算。對於表示式的計算順序,不同編譯器與系統會有不同方法。如:
a+b,如果這裡a和b都是一個表示式,有的會先計算a,有的先計算b。也就說你的函式返回值,有可能在不同的系統上有不同的返回值,是加法的問題,不是自加的問題。當然,你現在的程式主要錯誤在於,你沒有用上函式的引數x,至於修改,應該很容易。
4樓:匿名使用者
#include
int i=1,sum=1;
void main()
int jc(int x)
else
return 0;}
5樓:匿名使用者
vc6.0上表示沒問題!結果 55
6樓:匿名使用者
你這個題目的意思是:輸入5,1!+2!+3!+4!+5!=?
是這個意思嗎?然後我在回答。
7樓:典海祖香薇
第一個return求的是n>1時的階乘,這樣一層一層地找下去,處理遞迴併返回結果。第二個return前面省略了else,也就是當不滿足n>1這個條件時執行的,是判斷遞迴的邊界,返回的是1的階乘的答案,如果沒有這個return,遞迴就沒有邊界,一直進行下去,就會造成棧溢位。
ps:我也是剛學,說的可能不是很好,希望對你有幫助!
c語言計算20的階乘結果要用什麼資料型別
使用 unsigned long long 型別絕對的夠了,下圖是最後的運算結果 unsigned long long 型別是c語言裡面目前精度最高的資料型別,double或者long double 雖然也佔有8個位元組,但是他們的實際精度只有53位,而 unsigned long long 卻有6...
用C語言程式設計求 n以內素數的個數(n10 8)
寫了一個,連寫檔案也只用13秒.ncount 5761455 time 13s include include void main 先假設所有的數都是素數 for i 0 i pbyte 0 false 0不是素數pbyte 1 false 1不是素數pbyte 2 true 2是素數 篩選,所有偶...
C語言求1到10的階乘的和
帥傅香漢戌 程式輸出結果是對的,但是,getch 這句給改一下,getchar 就對了啊,但是我不知道你加這個是說明意思,完全沒有必要的啊。可用不要這句就是的啊。程式就是對的了。輸出結果也是對的。為了驗證,你可以把10改為4,一個小的資料,然後運算驗證一下就可以了。 福清竹普鶯 你試試把for後的兩...