Предмет: Информатика, автор: ArsenBekturov

Рекурсия 5 примеров, помогите пожалуйста срочно

Ответы

Автор ответа: aurri
0

Вот пример 5 задач и их реализации с помощью рекурсии. Так как язык программирования Вы не указали - я использую Java.

1. Дано натуральное число n. Выведите все числа от 1 до n.

public class Solution {

   public static String recursion(int n) {

       // Базовый случай

       if (n == 1) {

           return "1";

       }

       // Шаг рекурсии / рекурсивное условие

       return recursion(n - 1) + " " + n;

   }

   public static void main(String[] args) {

       System.out.println(recursion(10)); // вызов рекурсивной функции

   }

}

2. Даны два целых числа A и В (каждое в отдельной строке). Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.

public class Solution {

   public static String recursion(int a, int b) {

           // основное условие задачи

       if (a > b) {

           // Базовый случай

           if (a == b) {

               return Integer.toString(a);

           }

           // Шаг рекурсии / рекурсивное условие

           return a + " " + recursion(a - 1, b);

       } else {

           // Базовый случай

           if (a == b) {

               return Integer.toString(a);

           }

           // Шаг рекурсии / рекурсивное условие

           return a + " " + recursion(a + 1, b);

       }

   }

   public static void main(String[] args) {

       System.out.println(recursion(20, 15)); // вызов рекурсивной функции

       System.out.println(recursion(10, 15)); // вызов рекурсивной функции

   }

}

3. Дано натуральное число N. Вычислите сумму его цифр.

При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется)

public class Solution {

   public static int recursion(int n) {

       // Базовый случай

       if (n < 10) {

           return n;

       }// Шаг рекурсии / рекурсивное условие

       else {

           return n % 10 + recursion(n / 10);

       }

   }

   public static void main(String[] args) {

       System.out.println(recursion(123)); // вызов рекурсивной функции

   }

}

4. Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками.

При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.

public class Solution {

   public static int recursion(int n) {

       // Базовый случай

       if (n < 10) {

           return n;

       }// Шаг рекурсии / рекурсивное условие

       else {

           System.out.print(n % 10 + " ");

           return recursion(n / 10);

       }

   }

   public static void main(String[] args) {

       System.out.println(recursion(123)); // вызов рекурсивной функции

   }

}

5. Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.

Операцией возведения в степень пользоваться нельзя!

public class Solution {

   public static int recursion(double n) {

       // Базовый случай

       if (n == 1) {

           return 1;

       } // Базовый случай

       else if (n > 1 && n < 2) {

           return 0;

       } // Шаг рекурсии / рекурсивное условие

       else {

           return recursion(n / 2);

       }

   }

   public static void main(String[] args) {

       double n = 64;

       // вызов рекурсивной функции

       if (recursion(n) == 1) {

           System.out.println("Yes");

       } else {

           System.out.println("No");

       }

   }

}

Похожие вопросы
Предмет: Математика, автор: fygygygtgfy557