递归是怎么一步步实现的

使用递归函数一般会简化算法流程,降低函数的空间复杂性,使代码看起来更加的简洁。但递归带来诸多好处的同时也会降低代码的可读性,尤其是复杂的函数只能看成“黑盒子”去理解,单步调试虽然好用但是不适用于复杂函数。最好的办法是真正的理解递归!
           递归就是函数在执行过程中调用自身。这里以输入字符倒序输出(字符串反转)代码为例进行简要介绍。本质就是一步步走到结束条件然后再倒回来把每一次递归的完整步骤走完。具体过程见下图(手写的比较low)。如图所示,main函数流程用红色笔迹表示。一直再往前推进,铅笔部分从右到左依次表示递归函数reverse结束。

#include<stdio.h> 
void reverse(); 
int main() 
{ printf("输入一个字符:"); 
  reverse();
  printf("结束就打出来");
  getchar();
  return 0;
 } 
void reverse()
{ char c;
  printf("#");
  scanf("%c",&c);
  printf("*");
  if ( c!= '\n') 
  { printf("$");
    reverse();
    printf("%c",c);
  } 
  else printf("123");
 }

 

          如图所示,main函数流程用红色笔迹表示。一直再往前推进,铅笔部分从右到左依次表示递归函数reverse结束。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值