Числа Фибоначчи в Java — последовательность через цикл и рекурсию
Последовательность Фибоначчи начинается с двух чисел — 0 и 1, а каждое следующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 и так далее.
Пример 1: вывод последовательности Фибоначчи с помощью цикла for
В программе ниже мы выводим первые n чисел Фибоначчи. На каждой итерации текущее число печатается, а затем пересчитывается следующее.
class Main {
public static void main(String[] args) {
int n = 10, firstTerm = 0, secondTerm = 1;
System.out.println("Fibonacci Series till " + n + " terms:");
for (int i = 1; i <= n; ++i) {
System.out.print(firstTerm + ", ");
// compute the next term
int nextTerm = firstTerm + secondTerm;
firstTerm = secondTerm;
secondTerm = nextTerm;
}
}
}
Вывод:
Fibonacci Series till 10 terms:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
В программе firstTerm и secondTerm инициализируются значениями 0 и 1 (первые два числа Фибоначчи).
Внутри цикла for происходит следующее:
печатается
firstTerm(очередное число последовательности);вычисляется
nextTermкак суммаfirstTermиsecondTerm;значения сдвигаются: в
firstTermзаписываетсяsecondTerm, а вsecondTerm—nextTerm.
Пример 2: вывод последовательности Фибоначчи с помощью цикла while
Тот же результат можно получить через while, явно увеличивая переменную i.
class Main {
public static void main(String[] args) {
int i = 1, n = 10, firstTerm = 0, secondTerm = 1;
System.out.println("Fibonacci Series till " + n + " terms:");
while (i <= n) {
System.out.print(firstTerm + ", ");
int nextTerm = firstTerm + secondTerm;
firstTerm = secondTerm;
secondTerm = nextTerm;
i++;
}
}
}
Вывод:
Fibonacci Series till 10 terms:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
Работа программы аналогична предыдущей.
Совет
Обе версии корректны, но когда заранее известно количество итераций (от 1 до n), удобнее использовать цикл for.
Пример 3: вывод чисел Фибоначчи до заданного значения
В этом варианте мы печатаем все числа Фибоначчи, не превышающие заданного предела n.
class Fibonacci {
public static void main(String[] args) {
int n = 100, firstTerm = 0, secondTerm = 1;
System.out.println("Fibonacci Series Upto " + n + ": ");
while (firstTerm <= n) {
System.out.print(firstTerm + ", ");
int nextTerm = firstTerm + secondTerm;
firstTerm = secondTerm;
secondTerm = nextTerm;
}
}
}
Вывод:
Fibonacci Series Upto 100:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
Здесь вместо вывода заданного количества чисел мы печатаем последовательность до тех пор, пока firstTerm не превысит 100.