zoukankan      html  css  js  c++  java
  • 迭代算法练习

    算法

    迭代算法

    1. 从一道算法问题反思迭代算法

      《Java练习题》Java习题集一 - 加速丨世界 - 博客园 (cnblogs.com)

      古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
      

      感谢大佬分享练习题

      在这道题中我们需要实现的是每次调用函数去求解上一次和上上一次之和,那么如果使用for循环是可以实现的,但是语句会相对复杂

      定义一个方法动态调用自身

      private static int fun(int n){
          if (n == 1 || n == 2){
              return 1;
          }
          return fun(n - 1) + fun(n - 2);
      }
      

      自己写的时候会很容易忘记边界条件 n 为 1 和 2 时的情况,同时也有可能写多个调用自身的语句,这样极有可能会弄混,还有就是在关键的地方 return 合适的值

    2. 自己练习写的 输入任意一个数字,返回比此数字大的一个质数

      private static int upToPimeNumber(int num){
          boolean flag = true;
          num++;
      
          for (int i = 2; i <= num / 2; i++){
              if (num % i == 0) {
                  flag = false;
                  break;
              }
          }
          if (flag == false){
              return upToPirmeNumber(num++);
          }
          return num;
      }
      

      在编写此方法时,有几个错误

      1. 忘记边界条件,当 num 为 1或者一个质数直接输入时,会导致flag一直为true, 返回了本身,所以应该直接num++;
      2. 在调用自身时,应该时return一个自身方法,如果不使用return关键字,会导致最后面的return起作用,导致num不是最后算出来的,而是中间某一步骤的值
  • 相关阅读:
    angular-utils-pagination 使用案例
    解决mongodb ISODate相差8小时问题
    Android HttpClient POST JSON Restful-web-services
    将Map转换为Java 对象
    request.getParameterMap()
    angular-fullstack test
    oracle insert &字符插入问题
    listview底部增加按钮
    IDE 常用快捷键记录
    一个jQuery扩展工具包
  • 原文地址:https://www.cnblogs.com/rainful/p/14826557.html
Copyright © 2011-2022 走看看