如何在Java中生成直角Fibonacci系列金字塔?

时间:2016-09-22 04:35:11

标签: java for-loop logic fibonacci

我想生成这样的输出: -

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

获得所需输出需要什么逻辑?如果有人能解释我这样做会感激不尽:)

提前致谢!!

3 个答案:

答案 0 :(得分:1)

你需要通过在当前数字中添加两个前一个数字来改变内循环的逻辑,并像这样交换它们。

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();

        }
    }

}

答案 1 :(得分:0)

  1. 给出前两个数字0和1,无需计算。
  2. 使用String保存上一行字符串。
  3. 计算下一个数字,将其添加到上一个行字符串中。
  4. 以下是一个例子:

    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);
    
    }
    

答案 2 :(得分:0)

在Fibonacci系列中,只提供前两个数字,它们分别为0和1.系列的下一个数字是通过添加最后两个数字来计算的。用户可以通过提供系列中所需的整数数来限制该系列。

逻辑:创建Fibonacci系列背后的逻辑是添加两个整数并将它们保存在新变量z = x+y中,然后将第一个整数值替换为第二个整数和第二个整数整数值按其总和在系列x=y adn y=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);
}

希望这有帮助