Рекурсия кумир, не понимаю почему не до конца выполняется. Переворот числа. Или как ее лучше переписать. алг нач цел а, л вывод "Введите число :" ввод а л := 0 вывод перевод (а, л) кон
алг цел перевод(цел а, л) нач если а = 0 то знач := 0 иначе знач := л * 10 + mod(а, 10) все кон
Ваша программа рекурсивно переворачивает число, но есть ошибка в логике рекурсии. Вместо того, чтобы уменьшать число на 10, проще и правильнее просто получать последнюю цифру числа и добавлять ее к результату.
Используйте следующий подход для переворота числа:
алг нач цел а вывод "Введите число: " ввод а вывод переворот(a) кон алг цел переворот(цел a) нач если a = 0 то переворот := 0 иначе переворот := mod(a, 10) * power(10, floor(log10(a))) + переворот(a div 10) все кон
Этот подход использует функцию log10() для определения количества цифр в числе и power() для умножения последней цифры на 10^(количество цифр - 1). Таким образом, рекурсия работает с самого последнего разряда числа к самому первому.
Ваша программа рекурсивно переворачивает число, но есть ошибка в логике рекурсии. Вместо того, чтобы уменьшать число на 10, проще и правильнее просто получать последнюю цифру числа и добавлять ее к результату.
Используйте следующий подход для переворота числа:
алгнач
цел а
вывод "Введите число: "
ввод а
вывод переворот(a)
кон
алг цел переворот(цел a)
нач
если a = 0 то
переворот := 0
иначе
переворот := mod(a, 10) * power(10, floor(log10(a))) + переворот(a div 10)
все
кон
Этот подход использует функцию log10() для определения количества цифр в числе и power() для умножения последней цифры на 10^(количество цифр - 1). Таким образом, рекурсия работает с самого последнего разряда числа к самому первому.