关于递归(recursion)的总结

recursion和iteration是解决问题的两种方法。

递归方法具有程序短小,易读懂的特点。但是要写好它并不容易。要注意边界的条件。

 

1.反向打印字符串。

算法:reverse(s) = reverse(s+1) + *s

 

void
reverse(char* s){   
  char *p = s;
  if (NULL == s) return;
  if( *p!='/0'){       
     reverse(p+1);    //递归调用这里不能用p++做参数!!!
  }
  putchar(*p);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归算法是一种重要的计算机科学概念,在解决问题时可以极大地提高效率和简化实现。硅谷工程师可以用十五分钟为我们深入理解递归算法。 首先,递归算法是一种通过将一个问题分解为多个子问题解决的方法。这些子问题具有相同的结构,只是规模更小。递归算法通过不断递归调用自身来解决这些子问题,直到达到基本情况,即最小规模的问题能够直接解决。 其次,理解递归算法的关键是弄清如何将一个大问题分解为多个小问题。这可以通过定义递归函数来实现。递归函数是一个可以调用自身的函数,它接受某个问题的输入,并将其划分为更小的子问题。在处理子问题时,递归函数会再次调用自身,直到达到基本情况。 递归算法的一个重要概念是递归调用栈。当一个函数被调用时,计算机会将当前函数的状态保存在栈中。每次递归调用时,计算机会为当前函数创建一个新的栈帧,并将其添加到栈中。当基本情况被达到时,递归函数开始返回结果,并逐个退出栈帧,直到回到最初的调用点。 递归算法的优点是能够以简洁的方式解决复杂的问题,但需要注意的是,如果递归没有适当的停止条件或者递归过深,可能会导致栈溢出等问题。因此,在实现递归算法时,需要合理设置停止条件,并设计好递归终止的条件。 总结来说,递归算法是通过将一个问题分解为多个子问题来解决的方法。实现递归算法的关键是定义递归函数,将问题划分为更小的子问题,并通过递归调用来解决它们。理解递归算法的核心概念包括递归调用栈和递归终止条件。通过正确理解和运用递归算法,可以更高效地解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值