复兴无基础第二十六课 递归(一)
2025-11-23 15:22:29
发布于:上海
T1【递归】倒序输出
#include <iostream>
using namespace std;
void output(long long n, int digit) {
if (digit == 1) {
cout << n;
return ;
}
cout << n % 10;
output(n / 10, digit - 1);
}
int main() {
long long n;
cin >> n;
int digit = 0;
long long m = n;
while (m > 0) {
digit++;
m /= 10;
}
output(n, digit);
return 0;
}
T2【递归】进制转换
#include <iostream>
using namespace std;
void dfs(int x)
{
//3.1、十进制转化为二进制的整体思想:除2取余,余数逆序排列
//3.2、递归的结束条件
if (x == 0)
return;
//3.3、余数逆序,应该先递归在输出
dfs(x / 2);
cout << x % 2;
}
int main()
{
//1、定义变量 n
int n;
//2、输入变量 n
cin >> n;
//3、递归进行处理解决
dfs(n);
return 0;
}
T3【递归】进制转换2
#include <iostream>
using namespace std;
void dfs(int x, int m)
{
//3.3、递归的结束条件
if (x == 0)
return;
//3.4、 转化为 m 进制,余数逆序排列,所以先递归,后输出
dfs(x / m, m);
//3.5、输出的时候要判断余数的大小,若余数大于等于 10,要输出对应的大写字母
if (x % m < 10)
cout << x % m;
else
cout << char(x % m - 10 + 'A');
}
int main()
{
//1、定义变量 n 和 m
int n , m;
//2、输入 n 和 m ,表示把十进制数 n 转化为 m 进制
cin >> n >> m;
//3、判断 n 的大小
//3.1、n 等于 0 的时候,无论转化为几进制,结果都为 0
if (n == 0)
cout << 0;
else //3.2、一般情况,递归解决
dfs(n, m);
return 0;
}
这里空空如也

















有帮助,赞一个