Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223872
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 584
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-18 20:24
个人简介

学习总结,分享快乐。 望指正错误, 共同提高!!!

文章分类

全部博文(39)

分类: C/C++

2015-04-28 17:03:27

1>概述:


递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。


递归函数思想: 大事化小。

              比如:计算50+10;太大了不会算,怎么办?

                         那就算50+1; 然后再算51+1; … 59+1 = 60;

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



2>实例:

1》求字符串长度:

点击(此处)折叠或打开

  1.   #include<stdio.h>
  2.   int my_strlen(constchar*s)
  3.   {

  4.        if(s!=NULL&&*s==0){

  5.            return 0;

  6.         }else{

  7.         return my_strlen(s+1)+1;

  8.         }


  9.     }

  10.     int main(void)
  11.     {

  12.         printf(%d\n”,my_strlen(“hello”));

  13.     }

分析:hello太长了,数不过来,

ello的长度? 不会

llo的长度? 不知道

lo的长度?不知道

o的长度?

\0的长度?   知道是 【0】

然后要明白, 每次调用,my_strlen就多一个副本,副本执行完返回主调函数,这样依次+1,最后得到5.      刚开时理解就写出5份函数来。


2》123转化为'1' , '2', '3':


点击(此处)折叠或打开

  1. void itoa(unsigned int value, char *buf)
  2. {

  3.     unsigned int tmp;
  4.     int i;
  5.     tmp = value / 10;

  6.     if(tmp != 0)
  7.         itoa(tmp, buf);

  8.     for(i =0; buf[i] != '\0'; i++)   //找到为'\0'下标值。
  9.             ;
  10.     buf[i] = value %10 +'0';
  11. }


  12. int main(void)
  13. {
  14.     char buf[20]= {0};
  15.     unsigned int i = 123;

  16.      itoa(i, buf);
  17.     puts(buf);
  18. }

分析 :123转化成'1', '2' , '3'太长, 怎么办?

           12转化成'1', '2'还太长?

            1转化成'1'这个简单。

            然后依次,往回推倒。

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




阅读(1948) | 评论(0) | 转发(0) |
0

上一篇:Linux常用命令

下一篇:变量属性

给主人留下些什么吧!~~