
C/C++
Написать рекурсивную процедуру для записи натурального числа в обратном порядке
Как исправить данную программу, что бы не выводилась единица


#include <iostream>
using namespace std;
unsigned rev(unsigned x) {
static unsigned n = 0;
if (!x) {
unsigned m = n;
n = 0;
return m;
}
n *= 10;
n += x % 10;
return rev(x / 10);
}
int main() {
cout << "n: ";
unsigned n;
cin >> n;
auto m = rev(n);
cout << "m: " << m << '\n';
system("pause > nul");
}
using namespace std;
unsigned rev(unsigned x) {
static unsigned n = 0;
if (!x) {
unsigned m = n;
n = 0;
return m;
}
n *= 10;
n += x % 10;
return rev(x / 10);
}
int main() {
cout << "n: ";
unsigned n;
cin >> n;
auto m = rev(n);
cout << "m: " << m << '\n';
system("pause > nul");
}
#include <stdio.h>
#include <math.h>
unsigned len(unsigned n)
{
int l = 0;
while(n > 0)
{
n /= 10;
l++;
}
return l;
}
unsigned recursia(unsigned n, unsigned length)
{
static unsigned rc = 0;
unsigned i = length - 1;
rc += (n % 10) * pow(10.0, i);
i--;
return n > 10? recursia(n/10, i+1) : rc;
}
int main()
{
unsigned num;
printf("Введите натуральное число: ");
scanf("%u", &num);
unsigned length = len(num);
printf("%u\n", recursia(num,length));
return 0;
}
#include <math.h>
unsigned len(unsigned n)
{
int l = 0;
while(n > 0)
{
n /= 10;
l++;
}
return l;
}
unsigned recursia(unsigned n, unsigned length)
{
static unsigned rc = 0;
unsigned i = length - 1;
rc += (n % 10) * pow(10.0, i);
i--;
return n > 10? recursia(n/10, i+1) : rc;
}
int main()
{
unsigned num;
printf("Введите натуральное число: ");
scanf("%u", &num);
unsigned length = len(num);
printf("%u\n", recursia(num,length));
return 0;
}
int f(int n) -- эта функция должна что-то возвращать. у тебя она ничто не возвращает а просто выводит цифру
можно так:
int f(int n, int k = 0){ return n < 10? n + k * 10 : f(n / 10, n % 10 + k * 10); }
проверяем:
f(123250);
можно так:
int f(int n, int k = 0){ return n < 10? n + k * 10 : f(n / 10, n % 10 + k * 10); }
проверяем:
f(123250);
Александр Шамсудинов
или еще проще:
int f (int n, int k = 0) { return n? f(n / 10, k * 10 + n % 10) : k; }
int f (int n, int k = 0) { return n? f(n / 10, k * 10 + n % 10) : k; }
#include <stdio.h>
void f(int n);
int main()
{
int n;
printf("Number: ");
scanf("%d", &n);
f(n); printf("\n");
printf("Press Enter key for continue...");
getchar(); getchar();
return 0;
}
void f(int n)
{
if(n > 0)
{
printf("%d", n % 10);
f(n / 10);
}
return;
}
void f(int n);
int main()
{
int n;
printf("Number: ");
scanf("%d", &n);
f(n); printf("\n");
printf("Press Enter key for continue...");
getchar(); getchar();
return 0;
}
void f(int n)
{
if(n > 0)
{
printf("%d", n % 10);
f(n / 10);
}
return;
}
Похожие вопросы
- Написать РЕКУРСИВНУЮ функцию, которая принимает двухмерный массив целых чисел и выполняет круговой сдвиг массива ВЛЕВО.
- Напишите рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет
- Задача по Массивах С++ Дано натуральное число N...
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Язык си Найти все делители натурального числа N и вывести их в порядке возрастания и убывания.
- Определить k-ю цифру последовательности 182764125216343 … , в которой выписаны подряд кубы натуральных чисел.
- С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.
- Распечатать слова данного текста в обратном порядке c++ Надо переделать с помощью указателей
- Заданы натуральное число n и действительные числа a1, a2, …, an. Вычислить
- Дано не менее 3-х различных натуральных чисел, за которыми следует 0. Определить 3 наибольших числа в последовательности
а в строке return n > 10? recursia(n/10, i+1) : rc; i+1 заменить на i