天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

递归函数的使用

Posted on 2011-09-18 21:03 hoshelly 阅读(366) 评论(0)  编辑 收藏 引用 所属分类: C
要求:编写一个递归函数,将一个整数n转换为字符串,例如输入483,应输出字符串“483”。
设计思想:设置一个字符型数组str,用于存放转换后的字符串,因为递归函数中要反复使用它,所以将其设置为全局数组变量。要实现整数n转换成字符串的递归转换,首先要将n的个位数n%10转换为字符,插入到str字符串的最前面,然后将除个位后的高位部分n/10按照相同的方式来转换,直到要转换的数为0结束。
#include<stdio.h>
#include
<string.h>
void IntToStr(int n);
char str[80]={0};
void main()
{
    
int num;
    printf(
"input an integer number:");
    scanf(
"%d",&num);
    IntToStr(num);
    printf(
"The string is:%s\n",str);
}

void IntToStr(int n)
{
    
int i;
    
if(n==0)//整数为0时,递归结束
        return;
    
for(i=strlen(str)-1;i>=0;i--//将字符串整个往后移一个字符
        str[i+1]=str[i];
    str[
0]=n%10+0x30;  //将该数的个位数转换成字符放在字符数组的第一个元素的位置,+0x30表示十六进制的0,其实可以不加

    IntToStr(n
/10);//将该数的商,即除个位外的其他数通过递归转换
}

//递归过程:例如输入n=148,那么第一次递归时,str[0]存放的数是8,n/10=14,得到第二次递归的数是14;
//8原先存储在str[0],但第二次递归向后移动一个字符,变成存在str[1]内,而4存在str[0]内;
//第三次递归时,同理可知8放在str[2],4放在str[1],而1放在str[0],这样就将148转换为字符串。



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理