Loading...
netherblood avatar netherblood 95 Точки

[Homework] Console Input / Output *Fibonacci Numbers

Ето решение, успях да пресъздада алгоритъма в C#:

 

using System;

namespace FibonacciNumbers
{
    class FibonacciNumbers
    {
        static void Main()
        {
            uint firstMembers = uint.Parse(Console.ReadLine());

            int[] fibonacci = new int[firstMembers];
            fibonacci[0] = 0;
            fibonacci[1] = 1;
            for (int i = 2; i < firstMembers; i++)
            {
                fibonacci[i] = fibonacci[i-2] + fibonacci[i-1];
            }
            for (int i = 0; i < firstMembers; i++)
            {
                Console.Write("{0} ", fibonacci[i]);
            }
        }
    }
}

 

Тагове:
3
Programming Basics 11/09/2015 13:21:36
miroLLL avatar miroLLL 95 Точки

Здравейте,

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

Ето как се получи: http://pastebin.com/xdjXcs2R.

1
alex.mitev avatar alex.mitev 20 Точки

Netherblood  - вторият цикъл за каво е ? 

Направих задачата с нормален цикъл. След това пробвах и метода с масиви, но без вторият цикъл, но ми хвърля ексепшън след 3-тото завъртане.

 

 int lenght = int.Parse(Console.ReadLine());

            int[] numbers = new int[lenght];
            numbers [0] = 0;
            numbers [1] = 1;

            for (int i = 2; i <= 10; i++)

            {
                numbers[i] = numbers[i - 2] + numbers[i - 1];                  
            }

После принтирам, работи, но излиза от range...

Ако установим позиция [0] = 0 и [1] = 1; като пуснем цикъла от две, не трябва ли да стане следното ; 

първо завъртане ; number [2] = number [2-2] + number [2-1] = презаписваме позиция 2  и принтираме

второ завъртане - number [3] = number [3-2] + number [3-1] = позиция 3 и принтираме.

След третото записване има ексепшън. Ако може да помогнете откъде идва.

Мерси

 

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Въведеният ти length по всяка вероятност е по-малък отколкото трябва, големината на масива после зависи от него и на въпросното трето извъртане се опитва да достъпи елемент с несъществуващ индекс.

0
alex.mitev avatar alex.mitev 20 Точки

Мерси за отговора. Странното е , че пробвах с много различни дължини, но винаги след 3-то завъртане е ексепшъна... дебъгвах го, чудих се...

Надявам се, някой да вижда нещо различно.

 

0
TonislavAtanasov avatar TonislavAtanasov 86 Точки

Имаш масив с дължина length, а си хардкоднал цикъла до 10. Цикълът трябва да се върти до length и то не включително (< length, a не <= length). Пробвай така и би трябвало да работи нормално.

1
alex.mitev avatar alex.mitev 20 Точки

Мерси Тонислав, хардкодването беше един от многото опити да видя къде бъркам, и съм го пейстнал него грешно.

Проблемът беше в <= :) - давам дължина примерно 5, задавам позиция 0 и позиция 1, и имам само още 3! като сложа <= цикъла върти 4 пъти и логично излиза от обхват!

 беше супер елементарно, но не го видях. Помогна ми !

0
TonislavAtanasov avatar TonislavAtanasov 86 Точки

Радвам се, че съм ти бил полезен. Когато обхождаш индексирани колекции (масив, списък), както и стрингове, никога не включваш и дължината. Демек винаги < length/count, защото както знаеш в програмирането броим от 0, така че ако дължината е N, последният индекс е N-1. Когато видиш IndexOutOfRange, винаги си проверявай да не би някъде да си забравил някое '=' или пък ако индексът ти се изчислява по някакъв начин, да не би този индекс да стане отрицателен или >= на дължината. Често срещана грешка, ще свикнеш да си я хващаш :)

Поздрави,

Тони

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