亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這段遞歸代碼會無限重復?

為什么這段遞歸代碼會無限重復?

侃侃無極 2023-03-17 10:12:17
我只是用遞歸代碼計算,但它進入了無限循環。編輯:完整代碼。而IDE(Eclipse)什么也沒說,可以正常運行。class RepresentWithN {    static int number;    static int N;    static int answer;public int solution(int N, int number) {    RepresentWithN.N = N;    RepresentWithN.number = number;    answer = 9;    calc(0, 0);    return answer == 9 ? -1 : answer;}static int conN(int length) {    int tmp = N;    for (int i = 1; i < length; i++) {        tmp += tmp * 10;    }    return tmp;}static void calc(int prev, int count) {    if (count == 9) {        return;    }    if (prev == number) {        answer = Math.min(answer, count);        return;    }    System.out.println("count=" + count + " prev=" + prev);    for (int i = 1; i <= 5; i++) {        calc(prev + conN(i), count + 1);        calc(prev - conN(i), count + 1);        calc(prev * conN(i), count + 1);        calc(prev / conN(i), count + 1);    }}它重復'count'大約是7或8,不知道為什么。
查看完整描述

2 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

嘗試這個。每次運行后,取消注釋其中一個遞歸調用。



public class ForEverDemo {


   static long count = 0;


   public static void main(String[] args) {

      alongtime(0);

      System.out.println("count = " + count);

   }


   public static void alongtime(int v) {

      count++;

      if (v == 9) {

         return;

      }

      for (int i = 0; i < 3; i++) {

         alongtime(v + 1);

         // alongtime(v + 1);

         // alongtime(v + 1);

         // alongtime(v + 1);

         // alongtime(v + 1);

      }

   }

}


查看完整回答
反對 回復 2023-03-17
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

終count有其價值9。通過打印這個值來檢查這個。


static void calc(int prev, int count) {

        System.out.println("count=" + count + " prev=" + prev);

        if (count == 9) {

            return;

        }

        ...

你的遞歸中有很多分支,需要大量的計算。這就是為什么它沒有結束。你可以再等一個小時或幾天/幾年才能看到這個程序的結束?;蛘哂糜行У拇a替換此代碼。


查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號