C語言 角谷定理遞迴函式實現

2021-10-12 05:07:05 字數 977 閱讀 3319

今天寫的這道題其實不難,而且題目幾乎把難點都提出來了,但是我還是花了很長時間找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 ...