2014-10-29 70 views
-1

我有一些僞這裏:不知道,如果我的功能被劃分爲遞歸

index = 0 
function search(A, n) 
    if A[index] == n 
     return true 
    else 
     index += 1 
     return search(A, n) 

print search ([0, 1, 2, 3, 4 … 99], 5) 

這是遞歸函數甚至與index變量?我知道我在調用本身內部的方法(這是遞歸),但我不知道是否允許正確的遞歸在函數外部增加變量。

+1

它是。它是尾遞歸的。 – HuStmpHrrr 2014-10-29 16:46:49

回答

0

是的。遞歸函數是一種自我調用(或可能)的函數。它沒有做或沒有做的事與這個定義有關。 「是」是從代碼或潛力的意義上來解釋的,而不是在任何給定的運行中實際發生的事情。

在另一方面,也有很多事情,這是不明智的遞歸函數來完成,並根據一個全局變量來控制其操作就是其中之一。

0

建議你把它用這種方式:

function search(A, n) 
    function aux(i) 
     if A[i] == n 
      return true 
     else 
      return aux(i+1) 

    return aux(0) 

它的尾遞歸。

相關問題