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");
}
UP
Unusual* Person*
88 944
Лучший ответ
#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;
}
Russlan M
Russlan M
87 513
Russlan M ситоку i--; можно удалить
а в строке return n > 10? recursia(n/10, i+1) : rc; i+1 заменить на i
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? 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;
}
Юрий Горкунов
Юрий Горкунов
11 953

Похожие вопросы