A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 LoveMyself 于 2015-5-23 02:31 编辑
  1. public class feibonaqi {
  2.         /**
  3.          * 1.遍历出斐波那契数列前100个数
  4.          */
  5.         public static void main(String[] args) {
  6.                 method_1(100);
  7.         }

  8.         public static int method(int i) {
  9.                 // 前两项不在通项范围
  10.                 if (i == 1 || i == 2) {
  11.                         // 前两项返回自身的值1
  12.                         return 1;
  13.                 } else {
  14.                         // 此数列从第三项开始每一项的值是前两项的和(规律)
  15.                         // 递归算法,在此方法之内调用本方法
  16.                         return method(i - 1) + method(i - 2);
  17.                 }
  18.         }

  19.         public static void method_1(int n) {
  20.                 // 此处i控制的是角标,n控制的是项数
  21.                 for (int i = 1; i <= n; i++) {
  22.                         System.out.println("这是斐波那契数列第" + i + "项");
  23.                         // 对根据项数对每一项进行遍历输出
  24.                         System.out.println(method(i));
  25.                 }
  26.         }
  27. }
复制代码
  1. </blockquote></div><div class="blockcode"><blockquote>
  2. public class test {
  3.         /*
  4.          * 2、递归算法求和
  5.          */
  6.         static int sum = 0;
  7.         static int flag =0;
  8.         public static void main(String[] args) {
  9.                 int[] num = {4,6,8,2,10};
  10.                 //用递归算法求和
  11.                 recursionAdd(num);
  12.                 System.out.println("sum="+sum);
  13.         }
  14.         public static void recursionAdd(int[] num)
  15.         {
  16.                 //求和
  17.                 sum = sum +num[flag];
  18.                 //根据标记flag的变化,来取数组内元素
  19.             flag++;
  20.             //递归结束条件
  21.            if(flag<num.length)
  22.             {
  23.                    //递归算法
  24.                      recursionAdd(num);
  25.             }
  26.         }
  27. }
复制代码

通过练习,及网上查找,一致认为递归算法效率很低,想知道原因?

13 个回复

倒序浏览
感谢师兄分享~
回复 使用道具 举报
因为递归,例如第一题,想要求值,必须要进行前两项的相加,如此循环,效率就低多了。
回复 使用道具 举报
王建伟 发表于 2015-5-23 07:22
因为递归,例如第一题,想要求值,必须要进行前两项的相加,如此循环,效率就低多了。 ...

貌似也是,每次两项相加,都要把流程再走一遍,比较耗资源!这么说来,效率连for 和while 高都么有了
回复 使用道具 举报

现在应该还不是师兄吧
回复 使用道具 举报
谢谢分享。。。。。。。。
回复 使用道具 举报
不错,顶一个
回复 使用道具 举报
基础题里面的
回复 使用道具 举报
研究研究      总感觉  基础 不是很好
回复 使用道具 举报
楼主总结的不错喔!
回复 使用道具 举报
不明觉厉!
回复 使用道具 举报
大神,干的不错呀!
回复 使用道具 举报
不错,顶一个
回复 使用道具 举报
这个我们都还木有学
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马