递归求斐波那契数

斐波那契数是指前两位是1,后面的数依次是其前两位的和。即1,1,2,3,5,8…给你一个 n,求其值是多少

 public class recursionExercise01{//定义一个主方法public static void main(String[] args){//递归求斐波那契数//斐波那契数是指前两位是1,后面的数依次是其前两位的和。即1,1,2,3,5,8......给你一个 n,求其值是多少    A num = new A();int n =7;int res=num.fibonacci(n);if(res!=-1){System.out.println("n="+n+"时值为"+ res);}}
}class A {public int fibonacci (int n){if(n >=1){if(n==1||n==2){return 1;}else{return fibonacci(n-1)+fibonacci(n-2);}}else{System.out.println("请输入的n>=1的整数");return -1;}}
}

注意的点:

  1. 为了保证完整性,在类方法中外部嵌套 if-else,如果n不大于1的话,else提示请输入大于等于1的整数。因为方法是有返回值的,记得在else中也返回个值,如-1,以作判断;
  2. main方法中,加一个if(n!=-1)的判断,以方便遇到不正确情况报错;
  3. main方法和A类的fibonacci方法是两个独立的空间,两个都用n是互不冲突的。为了方便一下更改所想求的n的值,在main方法中int n,放置到获取fibonacci方法的语句和Sys输出的语句中,更加方便

递归求猴子吃桃问题

猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!
以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时,想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?

 public class recursionExercise01{public static void main(String[] args){A num = new A();int n = 9;int res = num.peach(n);if(n!= -1){System.out.println("day="+n+"时桃子有"+res+"个");}}
}class A {public int peach(int day) {if(day==10){return 1;}else if(day>=1&&day<=9){return (peach(day+1) + 1) * 2;}else{System.out.println("day 为1-10的整数");return -1;}}
}

注意的点:
一、 思路分析 逆推
1. day = 10 时 有 1 个桃子
2. day = 9 时 有 (day10 + 1) * 2 = 4
3. day = 8 时 有 (day9 + 1) * 2 = 10
4. 规律就是 前一天的桃子 = (后一天的桃子 + 1) *2(推导规律就是我们的能力,规律由剩下的+1等于前一天的一半推出)
5. 递归
二、 主要步骤和斐波那契一样,在写方法时三个情况写全了就行

Java递归求斐波那契数求猴子吃桃相关推荐

  1. C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈

    C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈 分享到: QQ空间 新浪微博 腾讯微博 豆瓣 人人网 递归是一种强有力的技巧,但和其他技巧一样,它也可能被误用. 一般需要递归解决的问题有两个特 ...

  2. 求斐波那契数(递归,非递归)

    目录 一.斐波那契数? 二.递归实现求第n个斐波那契数 2.1代码与运行结果 2.1.1图解递归过程 三.非递归求法 3.1为什么不用递归求法 3.2非递归 一.斐波那契数? 它指的是这样的数列:1, ...

  3. C语言入门——求斐波那契数

    斐波那契数列,又称黄金分割数列,因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--斐波那契数 ...

  4. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  5. 7-1 求斐波那契数的尾数

    大家都很熟悉斐波那契数列吧? 也许不会求出斐波那契数列的任意项,但这道题只需要你输出斐波那契数列第 n 项的最后一位数就可以了! 输入格式: 一个不超过100,000的正整数. 输出格式: 在一行中输 ...

  6. 用C语言求斐波那契数1,1,2,3,5,8......

    斐波那契数规律:第三个数等于前两个数之和 分别设为a,b,c,则 当n<=2时,c=1; 当n>2时,c=a+b 运用循环求,n--是防止程序进入死循环,当n>2时,每循环一次减一, ...

  7. python中求斐波那契数偶数和_[译] 斐波那契数列中的偶数 (Python vs. JavaScript)

    斐波那契数列中的偶数 (Python vs. JavaScript) 对于雇主来说,用某种方式来生成斐波那契数列是一道热门的面试题.而求斐波那契数列中的所有偶数便是其热门的变体之一.这里,我将用 Py ...

  8. java编程判断斐波那契数是质数

    斐波那契数列(FibonacciSequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列", ...

  9. 51-C语言-求斐波那契数的前n项和

    问题: 输入n,输出斐波那契数列前n项和. 思路: 什么是斐波那契数列--1 1 2 3 5 8.......即从第三位开始,设从第三位开始,每次所得数字为c,都有c=a+b; a为c的第前2个数,b ...

最新文章

  1. http://blog.51cto.com/wbb827/1175634
  2. vfp全国计算机二级,全国计算机二级VFP试题
  3. iOS之UI--涂鸦画板实例
  4. 第三次作业——结对编程
  5. java正则表示判断。是否以某个关键字结尾的
  6. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
  7. V-rep学习笔记:机器人模型创建2—添加关节
  8. Hyperledger Fabric 核心模块(3)cryptogen 工具
  9. vue调用接口获取后台数据_Vuex 存储||获取后台接口数据
  10. 系统的MAC地址修改
  11. 原理系列:Spark1.x 生态圈一览
  12. 《黄聪:手机移动站SEO优化教程》4、如何实现手机移动网站和PC站点的自主适配...
  13. Windows Phone开发(15):资源
  14. phpserialize ,PHP 中变量序列化和反序列化在 Python 中的实现
  15. “windows无法完成格式化”解决办法
  16. Navicat 安装过程问题总结
  17. AutoCAD 2019 for Mac 汉化安装手册
  18. Afc2add与AppSync
  19. 【预告】《天黑以后》(《The Darkest Hour》)
  20. 开机自动启动程序的操作(就是这么简单)

热门文章

  1. 科技新知识:让工业机械展示更清晰——发动机 3D 可视化系统!
  2. 360周鸿祎离婚老婆能分得90亿,如果奶茶妹妹离婚会不会分走更多?
  3. MyBatis No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration
  4. XCODE7.3 AutoLayout与Size Class自悟_非代码
  5. PWNHUB 五月公开赛+内部赛 writeup(【5月公开赛】MyNotes TemplatePlay 【胖哈勃内部赛|五月,你好】MockingMail)
  6. openlayers6【二十六】业务交互:Cluster 聚合标注控制,显示隐藏聚合标注
  7. 图解文玩核桃的种类和特点
  8. LED显示屏上的毛毛虫的形成原因
  9. 知识图谱概述(图谱学苑课程)
  10. 大数据---离线数仓实战项目(四)