递归需要满足三个条件
1. 一个问题的解可以分解为几个子问题的解
2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一致。
3. 存在递归终止条件
如何编写递归代码
最关键的是写出递推公式,找到终止条件,剩下将递推公式转化为代码
假如有n个台阶,每次可以跨1个台阶或者2个台阶,请问走这n个台阶有哦多少种走法?
n个台阶的走法就等于先走1台阶后,n-1个台阶的走法加上先走2台阶后,n-2个台阶的走法,用公式表示:
f(n) = f(n-1) + f(n-2)
有了递推公式,然后在看终止条件。有1台阶有1种走法,有2个台阶的话,有2中走法。所以
f(1) = 1 f(2) = 2
有了终止条件和递推公式,那么最后转换为代码
int f(int n){ if(n == 1) return 1; if(n == 2) retrun 2; return f(n-1) + f(n-2); }
总结一下,写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后在推敲出终止条件,最后将递推公式和终止条件翻译成代码。
标签:台阶,递归,走法,公式,皮球,头像,终止,递推 来源: https://www.cnblogs.com/OneSky-Mi/p/14620132.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。