递归法将一个整数n转换成字符串。例如,输入 483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数,C语言
时间: 2024-10-26 08:16:40 浏览: 21
在C语言中,递归法用于将整数转换为字符串的基本思路是利用栈数据结构。你可以创建一个函数,该函数接收一个整数n和一个空字符串作为参数。这个函数会依次处理每一位数字,并将其添加到结果字符串中。以下是递归转换的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个字符数组,存储当前位的数值
char* convertToStr(int n, int base = 10, char* result = "") {
// 基本情况:如果n为0,说明已经处理完所有位,返回结果字符串
if (n == 0) {
return result;
}
// 获取n的最后一位数字
int remainder = n % base;
// 将当前位的数值追加到结果字符串的末尾
result = realloc(result, strlen(result) + 2); // 预留空间并动态分配内存
result[strlen(result)] = remainder + '0'; // '0'~'9'之间的对应值
result[strlen(result) + 1] = '\0'; // 添加字符串结束符
// 递归调用,处理去掉最低位后的数值
return convertToStr(n / base, base, result);
}
int main() {
int num = 483;
char* str = convertToStr(num);
printf("Integer %d as a string is: %s\n", num, str);
free(str); // 释放内存
return 0;
}
```
在这个例子中,`convertToStr`函数会一直递归调用自身,直到n变成0为止。每次递归都会处理掉最低位,然后将剩余部分继续转换。
阅读全文