Ruby递归调用自己的函数作为参数

时间:2016-08-01 17:30:37

标签: ruby function recursion

我如何调用"多个递归函数"在Ruby中,一次又一次地将函数作为参数?

由此,我不是指像fibonacci sequence这样的通常的递归函数。我们假设我有一个名为hey()的函数。它会在函数中调用函数的次数打印字符串"Hey"澄清:

hey() #=> "Hey "
hey(hey()) #=> "Hey Hey "
hey(hey(hey())) #=> "Hey Hey Hey "

我试过

def hey(*args)
    "Hey "
end

def hey(*args)
    "Hey " + hey(*args)
end

def hey(n)
    "Hey " + hey(n)
end

我以前从未见过这样的例子。我知道这是可行的,但不知道如何。是否需要* args?我是否需要传递常规参数而不是*args

1 个答案:

答案 0 :(得分:5)

这是你要找的吗?

def hey(str="")
  "Hey " + str
end

p hey(hey(hey())) # "Hey Hey Hey "