当前位置:   article > 正文

求 1 1 2 3 5 8 ... 的第n个数 迭代法和递归来求_java用递归计算数列1 1 2 3 5 8…n,第n项的值

java用递归计算数列1 1 2 3 5 8…n,第n项的值
一、递归法
递归分为两种,直接递归和简介递归;
直接递归:方法自身调用自己;
间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法;

1、在什么时候写出递归的的方法:
把总的功能分解成子功能,且子功能的记录逻辑与总的计算逻辑类似;
2、在定义递归方法时,需要具备两个条件:
     ① 在方法中自己调用自己;
     ② 给递归一个终止的条件;

如果让递归无限循环执行,会出现栈内存溢出:java.lang.StachOverflowError;
递归一定要有条件限定保证递归可以停止,且递归次数不能太多,否则也会发生栈内存溢出。

  1. public class test {
  2.     public static void main(String[] args) {
  3.         f(40);
  4.     }
  5.     public static int f(int i) {
  6.         if (i == 1 || i == 2) {
  7.             return 1;
  8.         } else {
  9.             return f(i - 1) + f(i - 2);
  10.         }
  11.     }
  12. }
二、迭代法
  1. public class test {
  2.     public static void main(String[] args) {
  3.         f(40);
  4.     }
  5.     public static long f(int index){
  6.         if(index<0){
  7.             System.out.println("Error:输入错误,请输入大于0的值");
  8.             return -1;
  9.         }
  10.         int a = 1;
  11.         int b = 1;
  12.         int c = 0;
  13.         for(int i = 0;i<index-2;i++){ //去除前两个数1、1,循环相加index-2次。
  14.             c = a + b;
  15.             a = b; //第2个数变为第1个数
  16.             b = c; //和变为第2个数
  17.         }
  18.         return c;
  19.     }
  20. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/492862
推荐阅读
相关标签
  

闽ICP备14008679号