【问题标题】:Not Sure If My Function Is Classified As Recursive不确定我的函数是否被归类为递归
【发布时间】:2014-10-29 16:43:32
【问题描述】:

我这里有一些伪代码:

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 变量,这个函数是否也是递归的?我知道我在自身内部调用该方法(即递归),但我不知道是否允许适当的递归在函数外部具有递增变量。

【问题讨论】:

  • 是的。它是尾递归的。

标签: recursion pseudocode


【解决方案1】:

是的。递归函数是调用自身(或可能调用)的函数。它做或不做的其他任何事情都与该定义无关。 "Does" 是在代码或潜力的意义上解释的,而不是在任何给定运行中实际发生的意义上。

另一方面,对于递归函数来说,有很多事情是不明智的,而依赖全局变量来控制其操作就是其中之一。

【讨论】:

    【解决方案2】:

    建议你这样写:

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

    它是尾递归的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多