Ruby递归函数

Ale*_*lex 2 ruby recursion function

我有问题从递归函数返回值.

def ask_question(question)
    print question
    answer = STDIN.gets.chomp

    ask_question question if answer.empty?
    return answer
end
Run Code Online (Sandbox Code Playgroud)

第一次正确地返回答案但我在下一次调用中得到空字符串.这是为什么?

Jer*_*emy 7

那是因为您没有返回递归调用返回的值ask_question.

def ask_question(question)
    print question
    answer = STDIN.gets.chomp
    answer = ask_question question if answer.empty?
    return answer;
end
Run Code Online (Sandbox Code Playgroud)

您所做的就是在方法完成时返回第一个用户输入值(在您的情况下为空字符串).