Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

konstantin_zarev93 avatar konstantin_zarev93 0 Точки

Задача: Fibonacci

Къде е грешката в кода ми задачата е:  

0.Числа на Фибоначи

Напишете програма, която въвежда цяло число n и пресмята n-тото число на Фибоначи. Нулевото число на Фибоначи е 1, първото е също 1, а всяко следващо е сумата от предходните две. Примери:

вход

изход

 

вход

изход

 

вход

изход

 

вход

изход

 

вход

изход

0

1

1

1

2

2

5

8

10

89

 

using System;

namespace ConsoleInputOutput
{
    public static class Fibonachi
    {
        public static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            if (n < 1) Console.WriteLine(0);
            else
            {
                int first = 0;
                int second = 1;
                Console.WriteLine(first);
                Console.WriteLine(second);
                int  third = 0;
                for (int i = 2; i < n; i++)
                {
                    third = first + second;
                    Console.Write(third + " ");
                    first = second;
                    second = third;
                }
            }
        }
    }
}

 

Тагове:
0
Programming Basics 02/12/2016 11:10:42
cvetomirG avatar cvetomirG 132 Точки

Тук  е момента да погледнете рекурсията, за да се убедите колко лесно се работи рекурсивно специално подобни задачи.

 

1
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

И колко неподходяща е за този проблем. Като при рекурсивното решение без memoization, ако трябва да изчислим F(7) => F(5) се изчислява 2 пъти, F(4) => 3 пъти, F(2) => 8 пъти и т.н. Представи си ако трябва да изчислим F(45) какво се случва. 

0
cvetomirG avatar cvetomirG 132 Точки

Не се изразих много окей. Че е бавна, бавна е, но фибоначи е перфектната задача за да се разбере рекурсията.

 

1
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

Да. Мога да се съглася, че е една от задачите с които може да се демонстрира рекурсията :)

0
06/12/2016 17:17:22
ThePSXHive avatar ThePSXHive 436 Точки

Работи се лесно, защото редицата на Фибоначи е частен случай на т. нар. "числа на Лукас", които се задават чрез рекурентна релация. Когато такава отсъства в описанието на задачата, приложението на рекурсията се усложнява значително. Освен това, редицата на Фибоначи не е добър пример за приложението на рекурсията, поради експоненциалната изчислителна сложност и измамно лесното й написване, което прикрива неприятните детайли. По-добър пример би бил употребата й при обхождането на двойчно дърво, където са на показ ефективността на рекурсията и елегантността на решението.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.