Skip to content

Latest commit

 

History

History
37 lines (35 loc) · 2.23 KB

File metadata and controls

37 lines (35 loc) · 2.23 KB
function isValid(arr) {
  for(var i=0; i<arr.length; i++) {
    if (arr[i] <= 0) return 'invalid'
  }
  for(var i=2; i<arr.length; i++) {
    if (arr[i] !== arr[i-1] + arr[i-2]) return 'invalid'
  }
  return 'valid'
}

isValid([3, 5, 8, 13, 22, 35])

執行流程

  1. 宣告函式 isValid,傳入參數 arr
  2. 參數 arr 為陣列 [3, 5, 8, 13, 22, 35]
  3. 執行第一個迴圈,變數 i,初始值為 0,i=0,判斷 0 是否小於陣列的長度 ( 也就是 6 ),是,下一行
  4. 執行判斷式 if,判斷 arr[0]=3 是否小於 0,不是,回到第一個迴圈
  5. 執行第一個迴圈,執行 i++ ( 也就是 i+1 ),i=1,判斷 1 是否小於 6,是,下一行
  6. 執行判斷式 if,判斷 arr[1]=5 是否小於 0,不是,回到第一個迴圈
  7. 執行第一個迴圈,i++,i=2,判斷 2 是否小於 6,是,下一行
  8. 執行判斷式 if,判斷 arr[2]=8 是否小於 0,不是,回到第一個迴圈
  9. 執行第一個迴圈,i++,i=3,判斷 3 是否小於 6,是,下一行
  10. 執行判斷式 if,判斷 arr[3]=13 是否小於 0,不是,回到第一個迴圈
  11. 執行第一個迴圈,i++,i=4,判斷 4 是否小於 6,是,下一行
  12. 執行判斷式 if,判斷 arr[4]=22 是否小於 0,不是,回到第一個迴圈
  13. 執行第一個迴圈,i++,i=5,判斷 5 是否小於 6,是,下一行
  14. 執行判斷式 if,判斷 arr[5]=35 是否小於 0,不是,回到第一個迴圈
  15. 執行第一個迴圈,i++,i=6,判斷 6 是否小於 6,不是,跳出第一個迴圈,下一行
  16. 執行第二個迴圈,變數 i,初始值為 2,i=2,判斷 2 是否小於陣列的長度 ( 也就是 6 ),是,下一行
  17. 執行判斷式 if,判斷 arr[2]=8 是否不等於 arr[2-1]+arr[2-2] ( 也就是 5+3=8 ),否,回到第二個迴圈
  18. 執行第二個迴圈,執行 i++ ( 也就是 i+1 ),i=3,判斷 3 是否小於 6,是,下一行
  19. 執行判斷式 if,判斷 arr[3]=13 是否不等於 arr[3-1]+arr[3-2] ( 也就是 8+5=13 ),否,回到第二個迴圈
  20. 執行第二個迴圈,i++,i=4,判斷 4 是否小於 6,是,下一行
  21. 執行判斷式 if,判斷 arr[4]=22 是否不等於 arr[4-1]+arr[4-2] ( 也就是 13+8=21 ),是,回傳 invalid
  22. 執行完畢