用递归法将一个整数n转换成字符串。例如 输入483,应输出字符串“483”。n的倍数不确定,可以是任意倍数的整数。 思考:如果不用递归法,能否改用其它方法解决此问题?
时间: 2024-12-17 14:21:46 浏览: 18
递归法是一种直接的解决方案,用于将整数转换为字符串。下面是一个简单的C++递归函数示例,它实现了从个位开始逐步转换的功能:
```cpp
#include <string>
using namespace std;
// 递归函数,返回表示n的字符串形式
string int_to_string(int n, int base=10) {
if (n == 0)
return "";
else {
// 获取个位数并拼接到结果前面
string digit = to_string(n % base);
// 将剩余部分转换为字符串
return int_to_string(n / base, base) + digit;
}
}
int main() {
int num = 483;
string result = int_to_string(num);
cout << "将整数 " << num << " 转换成字符串为: " << result << endl;
return 0;
}
```
当你运行这个程序,会得到输出:“将整数 483 转换成字符串为: 483”。
当然,如果不使用递归,也可以通过循环迭代的方式来实现,这被称为迭代法。例如,在C++中可以这样做:
```cpp
string iterative_int_to_string(int n) {
string result;
while (n > 0) {
result += to_string(n % 10);
n /= 10;
}
reverse(result.begin(), result.end()); // 翻转字符串,因为默认从高位到低位添加数字
return result;
}
int main() {
int num = 483;
string result = iterative_int_to_string(num);
cout << "将整数 " << num << " 转换成字符串为: " << result << endl;
return 0;
}
```
两者的效率相近,但在某些场景下,递归可能会导致栈溢出,而迭代则通常更稳定一些。
阅读全文