2015-01-04 58 views
-4

我發現很難理解循環如何工作,特別是當有多個循環時。如果f3(1,-2,1),那麼這個函數返回什麼?也是n6 =?語言是C.可以向我解釋這個for循環是如何工作的嗎?

int f3(int n6, int n7, int n8) { 
    int i, j; 

    for(i = 0; i <= n8; i++) { 
     for(j = i; j > n7; j--) { 
      n6 *= 2; 
     } 
    } 

    return n6; 
} 

答案是32.幫助?

+0

請提供有關downvoting的評論。 – Mouser 2015-01-04 13:18:57

+0

Joe,請給我們一個明確的問題,例如:我不完全理解爲什麼這個函數(f3)通過使用lusses返回答案32?而不是「幫助」? – Mouser 2015-01-04 13:21:30

回答

1

該函數以int作爲輸入。

n7n8是迭代輸入。或者他們提供了長度值。第一個for lus循環長度爲n8。而i小於或等於n8

而第二個lus以第一個循環的當前index(= i)作爲開始點。它看起來指數是否大於n7,並且通過從指數(j)中減去one來迭代(j--),而index大於n7

該計算是在第二個lus的迭代中進行的:它將n6乘以two。當完成完成時,它將返回n6的乘積。

在你情況下,第一邏輯單元將運行兩次

  1. n8 = 1和0和1是小於或等於。
  2. 索引0變成循環2的starting indexj = 0且大於n7(-2)。
  3. 由於0和-1都大於-2,所以lus將運行兩次。
  4. 在此期間,lus n6(1)乘以兩倍。或1 * 2 * 2
  5. 第二LU的端部,並返回到所述第一,這再次運行,因爲1等於1
  6. 現在索引1變得LU的起始索引2.
  7. 該LU的港島線自1運行三次,0和-1並且大於-2。
  8. 再次乘法:4 * 2 * 2 * 2
  9. lus 1結束(兩次迭代)。

n6 = 32。

此功能上的迭代的給定數,其中n7需要大於n8,否則n6將返回未修改返回的n 2的冪。

相關問題