今天寫的這道題其實不難,而且題目幾乎把難點都提出來了,但是我還是花了很長時間找bug,真的是老學長大型翻車現場!在定義整形變數的時候直接把scanf()賦值給了這個整型變數結果一直計算不正確,唉,看了好久才發現!scanf()函式正常呼叫後會返回1.
來看題目!
輸入乙個自然數:若為偶數,則把它除以2;若為奇數,則把它乘以3加1。經過如此的有限次運算後,總可以得到自然數值1。求經過多少次運算,可得到自然數1。自然數1,認為經過0次計算得到。
提示,假定引數名為n:
(1)引數是1的時候,固定返回0;
(2)不滿足上述條件,且引數是偶數的時候,返回值是f(n/2)+1;
(3)上述兩個條件都不滿足,返回值是f(n*3+1)+1。
輸入格式:
使用者輸入乙個大於等於1的整數。
輸出格式:
輸出乙個正整數。
輸入樣例:
輸出樣例:使用者輸入8的時候,8除以2等於4,4除以2等於2,2除以2等於1。所以從8到1,需要經過3次運算。
輸入樣例: 輸出樣例: 先來看看正確的**:#include
intf
(int n)
;int
main()
intf
(int n)
else
if(n%2==
0)else
return0;
}
int n=
scanf
("%d"
,&n)
;
題目裡面n是使用者輸入的數字,要判斷這個數經過多少次運算才能變成1,所以給n賦值錯了,肯定就計算不出來正確結果! c語言遞迴函式實現
遞迴和非遞迴分別實現第n個斐波那契數 遞迴 include includeint fib int n return fib n 1 fib n 2 int main 非遞迴 include includeint fib2 int n return third int main 編寫乙個函式實現n k...
角谷猜想(C語言)
所謂角谷猜想,是指對於任意乙個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16 8 4 2 1。程式要求輸入乙個整數,將經過處理得到1的過程輸出來。乙個正整數n n 2,000,000 從輸入整數到1的...
角谷猜想 C 實現
題目描述 所謂角谷猜想,是指對於任意乙個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16 8 4 2 1。程式要求輸入乙個整數,將經過處理得到1的過程輸出來。輸入 乙個正整數n n 2,000,000 ...