2012-03-12 70 views
0

對不起,我不擅長數學 但是有沒有一個數學公式可以代替下面的代碼,即計算給定qid,點和因子沒有循環的點?如何將for循環計算轉換爲數學公式?

for (int i = 1; i < qid; i++) 
    { 
     points = points * factor; 
    } 

如何可以轉換上述代碼成數學公式比可以在一個單一的線路被計算,而不循環 感謝。

+0

什麼語言/平臺? – 2012-03-12 17:53:40

+0

你的計算積分值對於無限數是相同的。循環..你ü尋找相同的..? – Teja 2012-03-12 17:54:58

+0

上面的代碼是在java – Tamer 2012-03-12 18:00:17

回答

2

假設points被初始化爲1,它等同放着清單points = factor^(qid-1),或一般情況下:points_after = points_before * factor^(qid-1)

循環重複qid - 1倍[i獲取值:1,2,...,qid-1,爲價值i==qid你不這樣做多],和在每次迭代中,你每次都多points通過factor,所以你多它通過共factor^(qid-1)

+0

你怎麼解決這個問題?你用筆和紙跟蹤測試值的循環,並嘗試測試幾個方程或什麼? – Tamer 2012-03-12 18:09:19

+0

@Tamer:不需要,循環重複'qid-1'次,因爲它從1到'qid' [不包括'qid'],並且每次迭代增加1,因此你得到'points = points * factor * factor * ... * factor' ['qid-1' times],它的定義是'points * factor ^(qid-1)' – amit 2012-03-12 18:12:46

+0

我想了解如何獨立完成,像我應該學習什麼課程才能做到這一點:) – Tamer 2012-03-12 18:15:07

1

基本上你的代碼是代表「點=點*因素qid - 1「。您如何在代碼中表達這一點取決於語言/平臺。例如,您可以使用Java代碼:

points *= Math.pow(factor, qid - 1); 

正確的答案將取決於類型的pointsfactor,這兩者都不你告訴我們......

(也有可能你的意思是從0開始而不是1,在這種情況下,從上面的代碼中刪除- 1 ...)

0

指數。

points *= power(factor, qid - 1) 

應該工作。

+0

循環重複'qid-1'次。 – amit 2012-03-12 18:00:16

+0

你說得對。所以如果qid是5,循環將運行4次,如果因數是.5,那麼結果將是.5 * .5 * .5 * .5,但是如果只是QID是指數,這將是5次。編輯,謝謝。 – DanRedux 2012-03-12 18:01:46

0

points * = Math.pow(factor,qid);

+0

循環重複'qid-1'次。 – amit 2012-03-12 18:00:47