繁体   English   中英

如何打印出斐波那契数列的加法?

[英]How to print out the addition of the fibonacci sequence?

我在网上看到这段代码,决定自己尝试一下,但我一直在想,你如何打印出“斐波那契”的加法?

package fibonacci;
import java.util.Scanner;

public class Fibonacci {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner (System.in);
        
        int k, n, a = 1, b = 1;
        
        k = 0;
        
        System.out.println("input number: ");
        n = sc.nextInt();
        
        System.out.print("0 1 1 ");
        
        while (k <= n) {
            k = a + b;
            
            if (k >= n) break;
            System.out.print(k + " " );
            a = b;
            b = k;
        }
        
        System.out.println("Sum of 0 + 1 = 1");
        System.out.println("Sum of 1 +" + a + " = " + b);
    }
}

如何生成这样的输出:

0 1 1 2 3 5 8
0 + 1 = 1
1 + 1 = 2
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8

以初始计算(0 + 1 = 1)开始一个字符串,然后在循环的每次迭代中将当前计算附加到它,即

System.out.print("0 1 1 ");
String addition = "0 + 1 = 1\n";
while (k <= n) {
    k = a + b;
    addition += a+ " + " +b + " = " + k + "\n";
    if (k >= n) break;
    System.out.print(k + " " );
    a = b;
    b = k;
}
System.out.println();
System.out.println(addition);

这应该回答你的问题:

package com.example.demo;

import java.util.Scanner;

public class Fibonaccci {
  public static void main(String[] args) {

    Scanner sc = new Scanner (System.in);

    int k, n, a = 0, b = 1;

    k = 0;

    System.out.println("input number: ");
    n = sc.nextInt();

    System.out.print("0 1 ");
    StringBuffer acumResults= new StringBuffer("\n");
    while (k <= n) {
      k = a + b;
      acumResults.append(a+" + "+b+" = "+k+"\n");
      System.out.print(k + " " );
      if (k >= n) break;
      a = b;
      b = k;
    }
    System.out.println(acumResults);

  }
}

为了准确生成您的输出,我将编写以下代码:

package fibonacci;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class Fibonacci {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner (System.in);
        
        int k, n, a = 1, b = 1;
        
        k = 0;

        List<Integer> numbers = new ArrayList<Integer>();
        
        System.out.println("input number: ");
        n = sc.nextInt();
        
        System.out.print("0 1 1 ");
        numbers.add(1);
        numbers.add(1);
        
        while (k <= n) {
            k = a + b;
            
            if (k >= n) break;
            System.out.print(k + " " );
            a = b;
            b = k;
            numbers.add(k);
        }
        
        // used for loop since I don't know your Java version
        System.out.println();
        int oldSum = 0;
        for (int i= 0; i < numbers.size(); ++i) {
            int element = numbers.get(k);
            System.out.println oldSum + " + " + element + " = " + (oldSum + element);
            oldSum += element;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM