2010-11-09 11 views
0

J'ai ici problème avec ma queue récursion Fibonacci en Ruby. Quand j'exécute mon code, j'ai toujours cette erreur. Où ai-je tort?queue récursion Fibonacci en Ruby - Unit Test Erreur

1) Error: 
test_fibo_rek(Test_fibo_rek): 
ArgumentError: wrong number of arguments (1 for 3) 
    /Test_Fibonacci.rb:14:in `test_fibo_rek' 

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips 

def fibo(n) 
    check_pre(
    nat?(n)) 
    fibo_rek(n,0,1) 
end 

def fibo_rek(n,fibo1,fibo2) 
    if n == 0 
    return fibo1 
    else 
    fibo_rek(n-1,fibo2,fibo1 + fibo2) 
    end 
end 

class Test_fibo_rek < Test::Unit::TestCase 
    def test_fibo_rek 

    assert_equal(0,fibo_rek(0)) 
    assert_equal(13,fibo_rek(7)) 


    assert_raise(RuntimeError) {fibo_rek('10')} 
    assert_raise(RuntimeError) {fibo_rek(-5)} 
    end 
end 
+0

Veuillez corriger la mise en forme du code dans votre question. –

Répondre

3

Dans vos affirmations que vous appelez fib_rek(0) etc., même si fib_rek prend 3 arguments, non 1.

que vous vouliez dire appeler fib(0) - fib est celui qui ne prend qu'un argument.

+0

Merci beaucoup. Je pense que ma méthode def fibo_rek (n, fibo1, fibo2) est toujours fausse. N'est-ce pas? – KoKo

+0

@KoKo: Non, votre méthode 'fib_rek' est correcte. – sepp2k

+0

@KoKo: Notez cependant que ruby ​​n'optimise pas la récursion de queue sauf si vous l'activez spécifiquement comme drapeau de compilation (et seulement en 1.9). – sepp2k