2016-12-01 30 views
0

我有這樣的代碼:遞歸養數量的功率

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    end 
end 

power(4, 4) 
power(2, 3) 
power(10, 3) 
power(25, 2) 
power(6, 5) 

它以第一號和它提升到第二numberth動力。因此,它適用於所有這些功能,但我想編寫代碼的方式是打印所有5個功能函數的結果。我該怎麼做呢?我試圖用put來修改而不是返回,但是我無法讓它工作。

+1

我假設你想用遞歸做這個,但也有其他的方法,比如'x = 2; n = 3; n×reduce(1){| t,_ | v = x * t;放入v; v}#=> 8',在單獨的行上打印'2','4','8'。 –

回答

2

您有一個變量x,它指向方法調用的結果。你可以打印這個,然後從函數中返回:

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    puts x 
    x 
    end 
end 
+0

代碼會失敗n == 0,並且你忘記刪除'puts'(我猜你已經把它放在那裏進行測試),但除此之外:爲什麼要推出一個遞歸方法,如果可以簡單地做一個'x ** n'? – user1934428

+0

這是OPs代碼,複製粘貼,添加了'puts',因爲指定的問題是目標。我只是想在這裏回答這個問題。 –