хвостовая рекурсия Фибоначчи в Ruby - ошибка модульного теста - PullRequest
0 голосов
/ 09 ноября 2010

У меня здесь проблема с моей хвостовой рекурсией Фибоначчи в Ruby.

Когда я запускаю свой код, я всегда получаю эту ошибку. Где я сделал не так?

  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

1 Ответ

3 голосов
/ 09 ноября 2010

В ваших утверждениях вы звоните fib_rek(0) и т. Д., Хотя fib_rek принимает 3 аргумента, а не 1.

Вы хотели вызвать fib(0) - fib это тот, который принимает только один аргумент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...