Осознав, что рекурсия является одним из моих слабых мест, я нашел веб-сайт, который заставляет вас рекурсивно решать простые задачи (https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15)
Тот, с которым я застрял (digitsSorted, number 5), выглядит следующим образом: вы вызываете функцию, передавая число в качестве аргумента. Если цифры в этом числе отсортированы в порядке возрастания, функция возвращает True, в противном случае возвращает False. Повторяющиеся цифры разрешены. Функция также должна иметь возможность обрабатывать отрицательные числа. Одна цифра сортируется по определению.
Таким образом, func(0), func(112234) или func(-345669) возвращает True, а func(4321) возвращает False и так далее.
Чтобы заставить вас использовать рекурсию, существует ряд ограничений: никаких циклов, никаких глобальных переменных, никаких структур даты, но столько переменных, сколько вы хотите, и вы также не можете использовать строку для ее решения.
Мой код:
def digitsSorted(x):
if x < 0:
x = x * (-1)
digitsSorted(x)
elif (x/10) < 1:
return True
else:
remainder1 = x % 10
x = (x - remainder1) / 10
remainder2 = x % 10
if remainder1 >= remainder2:
digitsSorted(x)
else:
return False
Когда я вызываю функцию, я получаю правильный ответ только тогда, когда аргумент представляет собой одну цифру, иначе он возвращает None. Однако я думаю, что код правильный, потому что, когда я меняю:
return True
за:
print(True)
return
и то же самое со строкой "return False", код работает как надо. Я просто не могу понять, в чем проблема.
заранее спасибо
return
ing это было бы неправильно. 02.03.2018