Обсуждение:Java: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) →Задачи на рекурсию в Java: новая тема |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 6: | Строка 6: | ||
Вот несколько примеров задач на рекурсию в Java: | Вот несколько примеров задач на рекурсию в Java: | ||
Вычисление факториала числа: | ; Вычисление факториала числа: | ||
<syntaxhighlight lang="java"> | |||
public static int factorial(int n) { | public static int factorial(int n) { | ||
if (n == 0) { | if (n == 0) { | ||
| Строка 14: | Строка 16: | ||
} | } | ||
} | } | ||
Вычисление чисел Фибоначчи: | </syntaxhighlight> | ||
; Вычисление чисел Фибоначчи: | |||
<syntaxhighlight lang="java"> | |||
public static int fibonacci(int n) { | public static int fibonacci(int n) { | ||
if (n <= 1) { | if (n <= 1) { | ||
| Строка 22: | Строка 28: | ||
} | } | ||
} | } | ||
Вычисление суммы цифр числа: | </syntaxhighlight> | ||
; Вычисление суммы цифр числа: | |||
<syntaxhighlight lang="java"> | |||
public static int sumOfDigits(int n) { | public static int sumOfDigits(int n) { | ||
if (n == 0) { | if (n == 0) { | ||
| Строка 30: | Строка 40: | ||
} | } | ||
} | } | ||
Поиск наибольшего общего делителя: | </syntaxhighlight> | ||
; Поиск наибольшего общего делителя: | |||
<syntaxhighlight lang="java"> | |||
public static int gcd(int a, int b) { | public static int gcd(int a, int b) { | ||
if (b == 0) { | if (b == 0) { | ||
| Строка 38: | Строка 51: | ||
} | } | ||
} | } | ||
Разворот строки: | </syntaxhighlight> | ||
public static String reverseString(String s) { | |||
; Разворот строки: | |||
<syntaxhighlight lang="java"> | |||
public static String reverseString(String s) { | |||
if (s.isEmpty()) { | if (s.isEmpty()) { | ||
return s; | return s; | ||
| Строка 46: | Строка 63: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка. | Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка. | ||
Текущая версия от 13:12, 31 марта 2023
Задачи на рекурсию в Java
- Сгенерировано GenAI (POE)
- https://poe.com/s/kuwPtQIdzL1xdPsAURjp
Вот несколько примеров задач на рекурсию в Java:
- Вычисление факториала числа
public static int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
- Вычисление чисел Фибоначчи
public static int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
- Вычисление суммы цифр числа
public static int sumOfDigits(int n) {
if (n == 0) {
return 0;
} else {
return n % 10 + sumOfDigits(n / 10);
}
}
- Поиск наибольшего общего делителя
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
- Разворот строки
public static String reverseString(String s) {
if (s.isEmpty()) {
return s;
} else {
return reverseString(s.substring(1)) + s.charAt(0);
}
}
Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка.
