美文网首页
增强版斐波纳契函数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

    很好地遇到了斐波那契更大的兄弟,AKA Tribonacci。它基本上像斐波纳契一样,但是将序列的最后3个(而不是...

  • 斐波那契数列

    题目: 写一个函数,输入n,求斐波那契数列的第n项。 思路: 什么是斐波那契数列呢? 斐波纳契数列(Fibonac...

  • 366. 斐波纳契数列

    查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指: 斐波纳契数列的前10个数字是: 0, 1, 1, 2, ...

  • JavaScript|斐波纳契数列

    斐波纳契数列定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波...

  • 我的python学习笔记-第八天

    先编个小程序 我们尝试来写一个斐波纳契数列。先说下啥是斐波纳契数列。事情是这样的:斐波那契数列(Fibonacci...

  • 剑指offer阅读(二)

    剑指offer(二) 面试题九:斐波那契数列 题目一:写一个函数,输入n,求斐波那契数列的第n项,裴波纳契数列的定...

  • 斐波那契数,计算与分析

    什么是斐波那契数列? 斐波那契数列(Fibonacci sequence)是以意大利数学家列昂纳多·斐波那契的名字...

  • 尾递归优化的斐波那契数列

    斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(...

  • 递归优化的斐波那契数列

    斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(...

  • Golang实现菲波拉契数列

    斐波纳契数(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardo...

网友评论

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

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