В недавней статье мы разбирали код программы нахождения ряда Фибоначчи до определённого введённого пользователем числа. Теперь мы создадим программу, которая выведет нам только N-ный член ряда Фибоначчи на С#.
Как уже было сказано в предыдущей статье, ряд Фибоначчи — это такая числовая последовательность , в которой сумма двух предыдущих элементов будет составлять следующий элемент:
Итак, сначала нам нужно получить номер элемента ряда Фибоначчи, которое захочет увидеть пользователь.
1 2 |
Console.WriteLine("Какой член ряда Фибоначчи Вы хотите увидеть?"); int number = Convert.ToInt32(Console.ReadLine()); |
Выводим в консоль наш вопрос, затем введённое пользователем значение конвертируем из типа строки string в числовой тип int.
Теперь введём пару оговорок.
Int— 32-разрядный целочисленный тип данных, и диапазон его довольно велик, но не бесконечен (int может принимать 4 294 967 296 различных численных значений), он строго зафиксирован от -2 147 483 648 до 2 147 483 647. Ряд Фибоначчи же бесконечен, поэтому начиная с определенного, огромнейшего по своему значению, элемента ряда int не будет справляться, так как это число выйдет за пределы диапазона данного типа. Поэтому мы ограничим пользователя в том, чтобы он не смог зайти за пределы возможного значения. Максимальный элемент ряда, который мы сможем получить, не выходя за пределы — 48-ой по счёту со значением 512 559 680. Начиная с 49ого элемента, ряд выходит за пределы интевского диапазона. Поэтому мы введём оператор условия if:
1 2 3 4 5 |
if (number > 48) { Console.WriteLine("Извините, программа способна высчитывать только до 48 члена ряда Фибоначчи."); } |
Если веденное пользователем значение будет превышать 48, программа выведет в консоли следующее:
Также мы наложим «запрет» на ввод чисел меньше единицы, так как номера элементов ряда не могут быть нулевыми или отрицательными.
Всего у нас в программе получается три условия: если номер введенного элемента больше 48, если элементы введенного элемента меньше единицы, и, собственно, элементы, входящие в промежуток между 1 и 48. В таких случаях используется следующая вариация оператора if-else:
If(условие 1)
{
выполнение действия 1;
}
else if (условие 2)
{
выполнение действия 2;
}
else
{
выполнение действия 3;
}
По такому принципу пишем второе условие:
1 2 3 4 |
else if (number < 1) { Console.WriteLine("В ряде Фибоначчи нет такого элемента."); } |
Теперь приступаем к самому вычислению нужного нам элемента внутри оставшегося оператора условия:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
else { int perv = 1; int vtor = 1; int sum = 0; int j = 2; while (j <= number) { sum = perv + vtor; perv = vtor; vtor = sum; j++; } Console.WriteLine("Под номером " + number + " в ряде Фибоначчи стоит число " + perv); } |
Первые два элемента всегда равны единице, в sum будем заносить результат сложения perv и vtor. Также вводим переменную j — переменная, которая будет считать элементы ряда, чтобы потом по ней определить нужный нам элемент. Счёт элементов начнётся с двух, так как первые две единицы — два первых элемента; у нас уже инициализированы вне цикла while и не будут посчитаны в нём.
В цикле мы ставим условие, при котором ряд считается до тех пор, пока переменная j не достигнет такого же значения, как данные, введённые пользователем( то есть, если пользователь ввёл в консоли, что хочет увидеть 10ый элемент ряда Фибоначчи, то цикл не закончится, пока j тоже не станет равной 10).
Затем мы находим последний элемент, складывая два предыдущих числа, первому элементу присваиваем значение второго, а значение второго к последнему, после чего увеличиваем j на единицу — всё это в купе означает, что мы нашли ещё один элемент последовательности.
Примечание: также можете посмотреть эту статью. Там также производится подробный разбор данного алгоритма.
Как только j становится по условию больше переменной number, цикл прекращается, оставляя нам считанное значение номера элемента, который нам надо будет вывести на консоль. Значение же этого элемента у нас сохраняется в переменной perv.
Теперь нам просто остаётся вывести полученное число на экран. Ну и не забываем про строку:
1 |
Console.ReadLine(); |
Она нужна для того, чтобы программа не закрывалась моментально, как только выполнится весь код.
Вот так выглядит результат:
Исходный код программы, которая поможет найти N-ный член ряда Фибоначчи на C# можно скачать чуть ниже.
Скачать исходник
Поделиться в соц. сетях: