回覆列表
  • 1 # 範閒不是我

    //第一個:

    while(count

    {

    for(i=n-count,t=1;i>=1;i--) t*=i; //每次迴圈要初始化.你少了t=1這一項.

    count++;

    s+=t;

    }

    //第二個:

    思路完全錯誤,沒有改的必要.

    //第三個:

    同第二個.

    我不是亂說的.你看我的分析.

    你的第一個程式(改後)while迴圈的前幾步,我分解出來,你看就知道了.

    第一次:t=20!

    s=0+t=20!

    第二次:t=19!

    s=20!+19!

    第三次:t=18!

    s=20!+19!+18!

    ……

    我再分析一下答案:(這個是最優的,要學這種思想)

    第一次:t=1

    s=0+1=1

    第二次:t=1*2=2!

    s=1+2!

    第三次:t=2!*3=3!

    s=1+2!+3!

    第四次:t=3!*4=4!

    s=1+2!+3!+4!

    ……

    你的第二個程式:(我就不厭其煩,幫你解幾步吧)

    第一次:t=20

    s=0+20

    i--;//i=19

    i=n-count;//i=20

    第二次:t=20*20

    s=20+20*20

    i--;i=n-count;//i=19

    第三次:t=20*20*19

    s=20+20*20+20*20*19

    i=18

    第四次:t=20*20*19*18

    ……

    再分析下去我會瘋,上面這種方法叫做變數跟蹤法,是看看變數在前幾個迴圈有沒有按照期望的方式去變化。然後預測以後的步驟。

  • 中秋節和大豐收的關聯?
  • 賓館房間裡邊房頂紅燈一直閃那是什麼?