递归编程入门指南
1. 引言
理解递归的工作原理并不意味着能够轻松编写递归函数。通过不断练习和总结递归模式,我们可以掌握一些技巧,更轻松地进行递归编程。本文不会讨论递归的效率问题,而是专注于培养递归思维。
2. 递归类别:重复执行任务
在解决各种递归问题的过程中,我们会发现递归问题可以分为不同的类别。一旦掌握了某一类别问题的有效解决技巧,遇到同类问题时就能运用相同的技巧解决。其中,最容易的一类问题是算法的目标是重复执行某项任务。
2.1 示例:NASA 航天器倒计时算法
function countdown(number) {
console.log(number);
if (number === 0) { // number 为 0 是基本情况
return;
} else {
countdown(number - 1);
}
}
对于这类问题,函数的最后一行代码通常是对函数本身的简单调用,例如 countdown(number - 1) ,它的作用是发起下一次递归调用。
2.2 示例:目录打印算法
def find_directories(directory)
Dir.foreach(directory) do |filename|
if File.directory?("#{directory}/#{fi
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



