【题目链接】
ybt 1160:倒序数
【题目考点】
1. 递归
【解题思路】
解法1: 递归输出倒序数
- 递归问题:输出数字n的倒序数
- 递归关系:要想输出数字n的倒序数,可以先输出数字n倒序数的最高位,即数字n的最低位(n%10),然后输出n去掉最低位后的数字(n/10)的倒序数。
- 递归出口:如果n为0,直接返回,不输出。
解法2:递归构造倒序数字符串
- 递归问题:构造数字n倒序数的字符串
- 递归关系:要想构造数字n倒序数的字符串,可以将n的最低位(n%10)放在字符串的前面,后面连接n/10倒序数的字符串。
- 递归出口:如果n为0,返回空字符串
【题解代码】
解法1:递归输出倒序数
#include<bits/stdc++.h>
using namespace std;
void rev(int n)
{
if(n == 0)
return;
cout << n%10;
rev(n/10);
}
int main()
{
int n;
cin >> n;
rev(n);
return 0;
}
解法2:递归构造倒序数字符串
#include<bits/stdc++.h>
using namespace std;
string rev(int n)
{
if(n == 0)
return string("");
char c = n % 10 + '0';
return c + rev(n/10);
}
int main()
{
int n;
cin >> n;
cout << rev(n);
return 0;
}
解法3:非递归 数字拆分
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for(int a = n; a > 0; a /= 10)
cout << a%10;
return 0;
}