Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.11.2019
Сообщений: 2

Генерация списка Фибоначчи не работает

28.11.2019, 06:19. Показов 1806. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю список чисел фибоначчи, данный код генерирует такой ряд:0,1,1,1,2,3,5,8,13,21,34,55,89,144,2 33,377,610,987,1597,2584,4181,6765.
Почему в начале получается 3 единицы?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   var fibonacciNumbers = new List<int> { 0, 1 };
 
            var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
            var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
           
 
 
            int t=0;
            while (t < 6765)
            {
                t=previous + previous2;
                fibonacciNumbers.Add(t);
                previous = previous2;
                previous2 = t;
                
 
 
 
                
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2019, 06:19
Ответы с готовыми решениями:

Генерация чисел Фибоначчи
Здравствуйте, помогите, пожалуйста, решить следующую проблему. Имеется программа, суть которой выводить на экран числа Фибоначчи по 3 штуки...

Генерация первых n чисел Фибоначчи
Создать программу, которая способна генерировать первые n чисел Фибоначчи (где n -- параметр, передаваемый в метод, который генерирует...

Генерация чисел Фибоначчи с задержкой
Определить класс с помощью которого реализовать случайную генерацию чисел методом Фибоначчи с задержании . Входные данные: число N (1 &lt;...

3
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
28.11.2019, 06:52
Лучший ответ Сообщение было отмечено Krotpovorot как решение

Решение

Строки 13 и 14 должны выглядеть так:

C#
1
2
                previous2 = previous;
                previous = t;
Понятно почему?
1
0 / 0 / 0
Регистрация: 28.11.2019
Сообщений: 2
28.11.2019, 07:50  [ТС]
Спасибо! Работает как нужно, сейчас попробую разобраться в своей ошибке.

Добавлено через 47 минут
Не смог понять почему мой вариант ошибочный, а ваш вариант верный. Оно работает как то инверсно...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  var fibonacciNumbers = new List<int> { 0, 1 };
 
            var previous = fibonacciNumbers[fibonacciNumbers.Count - 1]; //из ячейки 1 сохраняем значение в переменную  previous "0"
            var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2]; //из ячейки 2 сохраняем значение в переменную  previous2 "1"
           
 
 
            int t=0;
            while (t < 6765)
            {
                t=previous + previous2; //t=0+1 
                fibonacciNumbers.Add(t); //вписываем полученное значение t = 1 
                previous2 = previous; // previous2=0
                previous = t; //previous=1
//На данный момент пока while не повторился имеем значения листинга Count - 1[0];Count - 2[1];Count - 3[1];
//повторяю while с новыми значениями.
while (t < 6765)
            {
                t=previous + previous2; //t=1+0 
                fibonacciNumbers.Add(t); //вписываем полученное значение t = 1 
                previous2 = previous; // previous2=1
                previous = t; //previous=1
//результат Count - 1[0];Count - 2[1];Count - 3[1];Count - 4[1]
while (t < 6765)
            {
                t=previous + previous2; //t=1+1 
                fibonacciNumbers.Add(t); //вписываем полученное значение t = 2 
                previous2 = previous; // previous2=1
                previous = t; //previous=2
//результат Count - 1[0];Count - 2[1];Count - 3[1];Count - 4[1];Count - 4[2]:
0
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
28.11.2019, 11:29
У тебя previous2 указывает на значение со смещением -2, а preivous имеет смещение -1:

C#
1
2
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
Т.е. previous2 имеет более раннее значение. А когда ты делаешь присвоение:

C#
1
2
previous = previous2;
previous2 = t;
ты перепутываешь их. У тебя должны они смеcтиться на одно значение вправо, и previuos2 получить значение previous, но вместо этого previuos получает значение более раннее - prevoius2.
Теперь понятно?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2019, 11:29
Помогаю со студенческими работами здесь

Одномерные массивы (генерация чисел первыми 15 числами Фибоначчи, функции)
Объявите одномерный целочисленный массив, в котором 15 элементов. Выполните генерацию массива первыми 15 числами Фибоначчи. Выведите Массив...

Генерация списка
По натуральным значением n сгенерировать упорядоченный по возрастанию список элементов целочисленной множества M. Соответственно на...

Генерация списка
Всем доброго! Что-то туплю к вечеру :( Нужно с генерировать отсортированный список n последовательностей случайными целыми числами...

Получение списка чисел Фибоначчи
Что то не выходит... %fib(Номер,Рез-т,Список). fib(1,1,):-H is 1,!. fib(2,1,):-H is 1,!. fib(N,F,):-N1 is N-1,fib(N1,F1,T),N2 is...

Генерация строки из списка
Привет всем. Написал я функцию для генерации запроса для подсчета количества по фильтру. Но заметил что не правильно идет подсчет. Для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru