其实这两个题的要求是一样的,小兔子的算法就斐波那契数列的算法!!!下面是我写的思路和代码,你参考下!!!
- /*
- * 思路:第一项是1,第二项是1;
- * 第三项=第一项+第二项
- * 第四项=第三项+第二项
- *
- * 定义一个函数用于获取每一项的值:getNum(n); n就表示第几项
- * 分情况:1.当n为1和2时, getNum()就为1;
- * 2.当n>2时,第n项=第n-1项+第n-2项,即 getNum(n)=getNum(n-1)+getNum(n-2)
- * 3.同时为了保证输入第几项的n正确,添加一个判断.
- */
- public class Test02 {
- public static void main(String[] args) {
- // 定义变量month表示
- int month = 40;
- // 定义变量num获取getNum()的返回值
- int num = getNum(month);
- // 打印输出结果
- System.out.println(num);
- }
- // 定义函数,将需要计算的n传入
- private static int getNum(int mouth) {
- // 数值合法性判断,当month<1不合法,返回一个逻辑错误数据-1;
- if (mouth < 1) {
- return -1;
- }
- // 当mouth,即第n项中的n>2时,就等于前两项的和
- if (mouth > 2) {
- return getNum(mouth - 1) + getNum(mouth - 2);
- }
- // 最后将month为1和2的情况列出
- else if (mouth == 2) {
- return 1;
- } else {
- return 1;
- }
- }
- }
复制代码 |