C語言新手,寫乙個簡單的遞迴,不能終止。。。

發布 科技 2024-06-17
9個回答
  1. 匿名使用者2024-01-29

    重要的是,遞迴函式至少有乙個它肯定會返回的出口,否則它將巢狀在無限迴圈中,直到堆疊溢位。 修改如下:

    void fun (int n)

    static int sum=0;

    sum+=n%10;

    if(!(n/10))

    printf("%d",sum);

    else fun(n/10);這裡還加了一句,說當 n 10 為零時,printf 會被列印出來,funsit 將不再遞迴呼叫,這樣在這次呼叫之後,遞迴就會開始逐步返回。 總會有一段時間 n 10 為零,所以這是我之前提到的確保退出的方法。

  2. 匿名使用者2024-01-28

    void fun (int n)

    static int sum=0;

    sum+=n%10;

    if(!(n/10))

    printf("%d",sum);

    fun(n/10);}

    請注意,遞迴退出非常簡單,它將依次鍵入多個和,從後到前將它們相加,然後列印定義全域性變數。

  3. 匿名使用者2024-01-27

    age(5) 太囉嗦了,但我以 age(3) 為例。

    1.如果在 main 中呼叫 age(3),則在輸入 age(3) 函式後,由於 n 不等於 1,則執行 c=age(n-1)+2; 這句話的意思是 age(n-1) 首先是 age(2),age(2) 的結果與 age(2) 的結果相加並分配給 c。

    2.接下來,程式執行 age(2)。 由於 n 不等於 1,請執行 c=age(n-1)+2; 這句話的意思是 age(n-1) 首先執行,即 age(1),age(1) 得到的結果加上 2,為 c 賦值。

    3.接下來,程式執行 age(1),其中 n 等於 1,因此 c 被分配值 10

    4.接下來,回到 age(2),c=age(1)+2=10+2=12

    5.接下來,回到 age(3),c=age(2)+2=12+2=14然後,返回 c。

    6.程式返回 main 函式並列印 age(3) 返回的結果,即 14

  4. 匿名使用者2024-01-26

    age(n-1)+2;這個表示式實際上是對 int age(int n) 函式的遞迴呼叫。

    上述過程等同於:

    #include ""

    int age(int n)

    void main()

    d=age(5)=age(4)+2=(age(3)+2)+2=((age(2)+2)+2)+2=(((age(1)+2)+2)+2)+2=18

    如果您還沒有了解函式的遞迴呼叫。 我只能告訴你以下幾句話。

    請按照上述步驟操作:

    首先查詢 age(5),它將返回 age(4)+2; 但是我們也不知道年齡(4),所以我們問年齡(4); 將返回年齡(3)+2; 同理,查詢 age(3) 將返回 age(2)+2; 查詢 age(2) 將返回 age(1)+2; 我們知道,當 n=1; 程式返回 10;

    這樣,我們得到 age(5)=age(4)+2=age(3)+2+2

    age(2)+2+2+2

    age(1)+2+2+2+2

    解決。

  5. 匿名使用者2024-01-25

    結果應為 18。 首先,age(5) 在 n=5 中傳遞,因為 n!=1 執行 else 語句。

    age(5)=age(4)+2;在這種情況下,n=4,同樣,n!=1 執行 else 語句。 age(4)=age(3)+2;age(3)=age(2)+2;age(2)=age(1)+2;年齡(1),n=1,所以c=10; 再次新增。

    age(5)=10+2+2+2+2=18.

  6. 匿名使用者2024-01-24

    age(int) 函式是逐層設定的,知道引數等於 1,返回 10,然後逐層拉出,然後起飛到最後一層得到 c 的值。

    2 是每層 (n!=1) 被新增。

  7. 匿名使用者2024-01-23

    樓上的解釋是正確的,age(n-1)+2,其實是乙個函式自呼叫,這是函式執行age(n-1),加上2,是暫時壓到棧裡,不先執行,知道遞迴條件的結束,即n==1

  8. 匿名使用者2024-01-22

    先儲存一下,你沒看房子,前面有個*,重新編譯一下,

  9. 匿名使用者2024-01-21

    當 n=1 時,只有一步。 即 1

    有兩種方法可以移動 n=2,一次移動兩個節,或者一次移動兩個節。

    當 n=3 時有三個。

    n = 4 時有 5 個。

    定律出來了,即 f[n]=f[n-1]+f[n-2]。

    當 n = 1 f[1]=1 時,當 n = 2 f[2]=2

相關回答
4個回答2024-06-17

這是我的書名:

問題:輸入 2 個整數,計算並輸出它們的總和、差值、乘積和商。 要求程式輸入不同的資料並執行兩次。 >>>More

12個回答2024-06-17

exit() 是退出整個程式,函式後的任何 ** 都不會被執行。 >>>More

15個回答2024-06-17

(p[0]+1) 先看括號內的p[0],即a+2,整個公式等於*(a+2+1),即。 >>>More

10個回答2024-06-17

d 是輸出整數資料的格式。

c 是輸出字元資料的格式。 >>>More

7個回答2024-06-17

優化問題應盡量分為3個,不足的部分應分為2個。 >>>More