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

Материал из Поле цифровой дидактики
 
Строка 6: Строка 6:
Вот несколько примеров задач на рекурсию в Java:
Вот несколько примеров задач на рекурсию в Java:


Вычисление факториала числа:
; Вычисление факториала числа:
public static int factorial(int n) {
public static int factorial(int n) {
     if (n == 0) {
     if (n == 0) {
Строка 14: Строка 14:
     }
     }
}
}
Вычисление чисел Фибоначчи:
 
; Вычисление чисел Фибоначчи:
public static int fibonacci(int n) {
public static int fibonacci(int n) {
     if (n <= 1) {
     if (n <= 1) {
Строка 22: Строка 23:
     }
     }
}
}
Вычисление суммы цифр числа:
 
; Вычисление суммы цифр числа:
public static int sumOfDigits(int n) {
public static int sumOfDigits(int n) {
     if (n == 0) {
     if (n == 0) {
Строка 30: Строка 32:
     }
     }
}
}
Поиск наибольшего общего делителя:
 
; Поиск наибольшего общего делителя:
public static int gcd(int a, int b) {
public static int gcd(int a, int b) {
     if (b == 0) {
     if (b == 0) {
Строка 38: Строка 41:
     }
     }
}
}
Разворот строки:
 
public static String reverseString(String s) {
; Разворот строки:
public static String reverseString(String s) {
     if (s.isEmpty()) {
     if (s.isEmpty()) {
         return s;
         return s;
Строка 46: Строка 50:
     }
     }
}
}
Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка.
Каждая из этих задач решается с помощью рекурсивной функции, которая вызывает саму себя с измененными параметрами в зависимости от частного случая, пока не будет достигнута базовая (терминальная) точка.

Версия от 13:09, 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);
   }

}

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