美文网首页
增强版斐波纳契函数Tribonacci

增强版斐波纳契函数Tribonacci

作者: gitcode | 来源:发表于2019-04-03 16:29 被阅读0次

    很好地遇到了斐波那契更大的兄弟,AKA Tribonacci。
    它基本上像斐波纳契一样,但是将序列的最后3个(而不是2个)数相加以生成下一个。
    所以,如果我们要以开始[1, 1, 1]输入开始我们的Tribonacci序列,我们有这样的序列:

    [1, 1 ,1, 3, 5, 9, 17, 31, ...]
    

    我们将开始修改与于[0, 0, 1]如下:

    [0, 0, 1, 1, 2, 4, 7, 13, 24, ...]
    

    你需要创建一个给出数组/列表的斐波纳契函数,返回前n个元素 - 包含所有序列。
    入参的数组始终包含3个数字; n将始终为非负数; if n == 0,然后返回一个空数组。
    同时需要注意的0<n<3的情况。

    我的解决

      public  double[] tribonacci(double[] s, int n) {
            double[] b = new double[n];
    
            // 如果长度小于3,则遍历传入的数据并返回对应的长度数组
            if (n < 3) {
                for (int i = 0; i < n; i++) {
                    b[i] = s[i];
                }
                return b;
            }
    
            // 先把传递过来的前三位放到新数组中
            if (s != null && s.length > 0) {
                for (int i = 0; i < s.length; i++) {
                    b[i] = s[i];
                }
    
                // 遍历并放入长度减去3的数值放到新数组中
                for (int i = s.length; i < n; i++) {
                    double first = b[i - 3];
                    double second = b[i - 2];
                    double thrid = b[i - 1];
                    b[i] = (first + second + thrid);
    
    
                }
            }
            return b;
        }
    

    排名前三的最佳解答

    import java.util.Arrays;
    
    public class Xbonacci {
      public double[] tribonacci(double[] s, int n) {
    
          double[] tritab=Arrays.copyOf(s, n);
          for(int i=3;i<n;i++){
            tritab[i]=tritab[i-1]+tritab[i-2]+tritab[i-3];
          }
          return tritab;
    
        }
    }
    
    import java.util.Arrays;
    
    public class Xbonacci {
      public double[] tribonacci(double[] s, int n) {
    
          double[] tritab=Arrays.copyOf(s, n);
          for(int i=3;i<n;i++){
            tritab[i]=tritab[i-1]+tritab[i-2]+tritab[i-3];
          }
          return tritab;
    
        }
    }
    
    public class Xbonacci {
    
      public double[] tribonacci(double[] s, int n) {
          // hackonacci me
          if( n == 0 )
            return new double[0];
          double[] res = new double[n];
          for( int i = 0; i < n; i++ ) {
            if( i < 3 )
              res[i] = s[i];
            else
              res[i] = res[i-1]+res[i-2]+res[i-3];
          }
          return res;
      }
    }
    

    参考链接

    Solutions: Tribonacci Sequence

    相关文章

      网友评论

          本文标题:增强版斐波纳契函数Tribonacci

          本文链接:https://www.haomeiwen.com/subject/rlmzbqtx.html