Класс Фибоначчи всегда возвращает 0 - PullRequest
0 голосов
/ 24 декабря 2009

У меня есть этот класс:

public class Fibonacci
{
    public static int Calculate( int x )
    {
        if (x <= 0)
        {
            return 0;
        }
        else
        {
            return Calculate(x - 1) + Calculate(x - 2);
        }
    }
}

В соответствии с учебником, который я делаю, если один из входов 6 должен получить 8 как ожидаемый результат, но когда я запускаю его, он всегда возвращает 0. Это рекурсивно, поэтому для меня это имеет смысл, но как они получают 8 как ожидаемый результат?

Ответы [ 5 ]

6 голосов
/ 24 декабря 2009

Что такое 0 + 0 + 0 + 0 + 0 + 0 + ... + 0?

Вот твой ответ.

4 голосов
/ 24 декабря 2009

Вы выходите из условия неправильно. Прочитайте ваш код и продумайте его для входов 1 и 2.

2 голосов
/ 24 декабря 2009

Последовательность Фибоначчи имеет 2 точки остановки, и они обе равны 1 (1,1,2,3,5, ...). Это работает:

using System;
using System.Collections.Generic;

public class Fibonacci
{
    public static int Calculate( int x )
    {
        if (x <= 1)
            return 1;
        else
            return Calculate(x - 1) + Calculate(x - 2);
    }

    public static void Main()
    {
     Console.WriteLine(Calculate(4));
    }
}
1 голос
/ 24 декабря 2009

Либо учебник неверен, либо вы скопировали код неправильно. Вы правы, что то, что у вас есть выше, всегда будет возвращать 0. Проверьте ваши базовые случаи.

0 голосов
/ 24 декабря 2009

Abductio ad absurdum - Расчет (x) никогда не возвращает ненулевое число. 8 - это шестое число Фибоначчи, но вы никогда не создадите ненулевое значение из этой функции. Как указывает @Blindy, вам нужен более обширный и всеобъемлющий базовый вариант.

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