Обсуждение:Java: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
Строка 7: Строка 7:


; Вычисление факториала числа:
; Вычисление факториала числа:
<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) {
Строка 23: Строка 28:
     }
     }
}
}
</syntaxhighlight>


; Вычисление суммы цифр числа:
; Вычисление суммы цифр числа:
<syntaxhighlight lang="java">
public static int sumOfDigits(int n) {
public static int sumOfDigits(int n) {
     if (n == 0) {
     if (n == 0) {
Строка 32: Строка 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) {
Строка 41: Строка 51:
     }
     }
}
}
</syntaxhighlight>


; Разворот строки:
; Разворот строки:
<syntaxhighlight lang="java">
  public static String reverseString(String s) {
  public static String reverseString(String s) {
     if (s.isEmpty()) {
     if (s.isEmpty()) {
Строка 50: Строка 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);
    }
}

Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка.