首页 > 科技 > 农夫卖鸭子的故事---递归算法运用三。 递归算法常见面试题集合

农夫卖鸭子的故事---递归算法运用三。 递归算法常见面试题集合

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试、笔试中经常问的问题,欢迎大家关注。一起学习,一起成长。

题目详情

一农夫赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?

题意剖析

假设他出发时共赶了x只鸭子,

每经过一个村子卖出的鸭子数是:x/2+1;剩下了 x-(x/2+1)只鸭子,

已知到达第7个村子后剩下了2只鸭子,就可以有x-(x/2+1)=2,

将x得出为6只鸭子,故得知在第七个村子的时候有6只鸭子 卖出去6/2+1=4只鸭子。

假设经过上一个村庄鸭子数是SUM1,下一个村庄是SUM2

可以得出

sum1-(sum1/2+1) = SUM2

sum1/2-1 = sum2

sum1 = 2*sum2+2

由此我们可以从后往前推出他出发时共赶的鸭子数和经过每个村子卖出的鸭子数。

算法构建

递归终止的条件是当达到第7个村庄时递归停止,

算法构造:当 n=7 时 sum = 2;当 0

代码示例

博主对递归算法通过六篇文章的讲解,希望能给大家提供学习和帮助,强烈推荐《算法导论》书籍给大家。

面试拓展

题目一、计算3个A,2个B可以组成多少排列?如:AAABB,ABBAAA。

题目二、角谷定理的求证。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。

题目三、电话号码对应的字符组合:在电话或者手机上,一个数字如2对应着字母ABC,7对应着PQRS。那么数字串27所对应的字符的可能组合就有3*4=12种(如AP,BR等)。现在输入一个3到11位长的电话号码,请打印出这个电话号码所对应的字符的所有可能组合和组合数。

题目四、日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。分完 后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。结果大家手中的桔子正好一 样多。问六兄弟原来手中各有多少桔子?

面试题来自《算法导论》书籍,以及网络,供大家学习参考。

-------------

写的不好,如果大家有更高的见解欢迎评论

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/245649.html