如何在 Java 中生成直角斐波那契数列金字塔?

How to generate a right angle Fibonacci Series pyramid in Java?

我想生成这样的输出:-

0

0 1

0 1 1

0 1 1 2

0 1 1 2 3

0 1 1 2 3 5

但是,我正在尝试以这种方式实现,但是缺少一些我无法破译的逻辑。

这是我正在尝试的:-

import java.util.Scanner;

class Fibonacci

{

public static void main(String arr[])

{

System.out.println("Enter a no.");

Scanner input=new Scanner(System.in);

int num=input.nextInt();

int x=0,y=1;

for(int i=0;i<=num;i++)

{

for(int j=0;j<i;j++)

{

System.out.print(j);

}

System.out.println("");

}

}

}

它生成这样的输出(考虑 num=6)

0

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3 4 5

获得所需输出需要什么逻辑?如果有人能向我解释一下,我将不胜感激:)

提前致谢!!

  1. 先给出0和1两个数,不用计算。
  2. 使用String保存上一行字符串。
  3. 计算下一个数字,将其添加到您的上一行字符串中。

这是一个例子:

int x = 0 , y = 1;

int num = 6;

System.out.println("0");
System.out.println("0 1");

String str = "0 1";

for(int i = 2 ; i < num ; i ++){
    int amt = x + y ;

    x = y;
    y = amt;

    str += " " + amt;

    System.out.println(str);

}

您需要像这样更改内部循环的逻辑,将两个先前的数字添加到当前数字并像这样交换它们。

import java.util.Scanner;

class Fibonacci

{

    public static void main(String arr[])

    {

        int x = 0, y = 0, c = 0;

        System.out.println("Enter a no.");

        Scanner input = new Scanner(System.in);

        int num = input.nextInt();

        for (int count = 0; count < num; count++) {

            System.out.print(0);
            x = 0;
            y = 1;
            c = 0;
            for (int i = 1; i <= count; i++) {

                c = x + y;

                y = x;
                x = c;

                System.out.print(" " + c);
            }
            System.out.println();

        }
    }

}

在斐波那契数列中,仅提供前两个数字,即 0 和 1。该系列的下一个数字是通过将最后两个数字相加计算得出的。该系列由用户通过提供系列中所需的整数数量来限制。

逻辑:创建斐波那契数列背后的逻辑是将两个整数相加并将它们保存在一个新变量中z = x+y,然后将第一个整数值替换为第二个整数和第二个整数值相加,在 x=yy=z.

系列中向前移动一步

在您的问题中,您希望系列以直角三角形打印,因此您需要将已打印的系列保存为字符串

int n = 10;
System.out.println("0\n");
System.out.println("0 1\n");
int x = 0, y=1;
int i=2, z=0;
String str = "0 1";
while(i!=10)
{
    z = x+y;
    str += " " + z;
    x=y;
    y=z;
    i++;
    System.out.println(str);
}

希望对您有所帮助