Рекурсия, вызов функции без параметров
Задача найти второй максимум.
Ссылка на источник: https://habr.com/ru/post/275813/
Меня интересует реализация на Python. Условие задачи в том, что нельзя передавать параметры в функцию, в этом то и проблема, ведь задача заточена на рекурсию. Возможно ли так сделать? На сайте приведено решение на Java, я не разбираюсь в Java, но там они передают параметры в функцию.
Сам код на Java:
public class Solution {
public static void recursion(int max1, int max2) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
// Базовый случай
if (n > 0) {
// Шаг рекурсии / рекурсивное условие
if (max1 < n) {
recursion(n, max1);
} // Шаг рекурсии / рекурсивное условие
else if (max2 < n) {
recursion(max1, n);
} // Шаг рекурсии / рекурсивное условие
else {
recursion(max1, max2);
}
} else {
System.out.println(max2);
}
}
public static void main(String[] args) {
recursion(0, 0); // вызов рекурсивной функции
}
}
Ещё, я не очень понимаю, как должен выглядеть ввод последовательности.
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Функция без параметров для одного максимума:
>>> def remax():
... n = int(input())
... if n == 0:
... return 0
... return max(n, remax())
...
>>> remax()
4
6
2
4
0
6
>>> _
6
>>>
Для двух максимумов получается такая
>>> def remax():
... f = int(input())
... if f == 0:
... return 0,0
... mm, sm = remax()
... l = [f,mm,sm]
... mm = max(*l)
... l.remove(mm)
... sm = max(*l)
... return mm, sm
...
>>> remax()
1
2
3
4
3
0
(4, 3)
Если вызвать как remax()[1] - получишь второй максимум
