Java中使用for语句的斐波那契数列

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18296360/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 00:12:57  来源:igfitidea点击:

Fibonacci sequence in Java using for statements

javafor-loopfibonacci

提问by Carlo Solomon Fernandez

I tried making a Java program executing the Fibonacci sequence.

我尝试制作一个执行斐波那契数列的 Java 程序。

Here's my code:

这是我的代码:

import java.io.*;
public class Fibonacci{
    public static void main(String[]args){
        BufferedReader Data=new BufferedReader (new InputStreamReader(System.in));
        int ctr1=0;
        int ctr2=0;
        int num1=0;
        int num2=0;
        int num3=0;
        try{
            System.out.println("How many numbers would you want to see?");
            ctr2=Integer.parseInt(Data.readLine());
            for(int ans=0; ctr1==ctr2; ctr1++){
            num1++;
            System.out.println(num2 + "\n" + num1);
            ans=num1+num2;
            System.out.println(ans);
            ans=num3;
            }
        }catch(IOException err){
            System.out.println("Error!" + err);
        }catch(NumberFormatException err){
            System.out.println("Invald Input!");
        }
    }
}

Obviously, I'm a beginner in Java and I don't know how to properly use the for statement. Would somebody be kind enough to make my code work? Or maybe make a way shorter code that works. I'm a beginner so be cool. Thanks :)

显然,我是 Java 初学者,不知道如何正确使用 for 语句。有人会好心让我的代码工作吗?或者也许可以制作一种更短的代码。我是初学者,所以要冷静。谢谢 :)

回答by Juvanis

Look at this code snippet which is much easier than yours to understand. Solution tip is simple, you keep 2 pointers for the first 2 fibonacci numbers and update them appropriately in the loop. In the example below, the loop executes 10 times, you can modify it as desired.

看看这个比你更容易理解的代码片段。解决方案提示很简单,您为前 2 个斐波那契数保留 2 个指针,并在循环中适当地更新它们。在下面的示例中,循环执行 10 次,您可以根据需要对其进行修改。

static void fibonacci() {
    int ptr1 = 1, ptr2 = 1;
    int temp = 0;
    System.out.print(ptr1 + " " + ptr2 + " ");
    for (int i = 0; i < 10; i++) {
        System.out.print(ptr1 + ptr2 + " ");
        temp = ptr1;
        ptr1 = ptr2;
        ptr2 = temp + ptr2;
    }
}

Output:

输出:

1 1 2 3 5 8 13 21 34 55 89 144

1 1 2 3 5 8 13 21 34 55 89 144

回答by Joban Dhillon

Expanding on the answers, if you want to look really cool use recursion.

扩展答案,如果您想看起来很酷,请使用递归。

public class Fibonacci {
    public static long fib(int n) {
        if (n <= 1) return n;
        else return fib(n-1) + fib(n-2);
    }

    public static void main(String[] args) {
        int N = 300; // how many numbers you want to generate
        for (int i = 1; i <= N; i++)
            System.out.println(i + ": " + fib(i));
    }
}

Here is Google search of what it is, hope those resources help: http://bit.ly/1cWxhUS

这是谷歌搜索它是什么,希望这些资源有帮助:http: //bit.ly/1cWxhUS

回答by Joshua Dugger

import java.util.*;

public class sequence1 
{
    public static void main(String[] args) 
    {
        sequence1 fs=new sequence1();
        fs.fibonacci(); 
    }
    public void fibonacci() 
    {
        int numb1 = 1;
        int numb2 = 1;
        int temp = 0;

        @SuppressWarnings("resource")
        Scanner input=new Scanner(System.in);
        System.out.println("How Many Terms? (Up To 45)");
        int x=input.nextInt();
        x=x-2;

        System.out.println(numb1);
        System.out.println(numb2);

        for (int i = 0; i < x; i++) 
        {
            System.out.println(numb1 + numb2 + " ");
            temp = numb1;
            numb1 = numb2;
            numb2 = temp + numb2;
        }
    }
}

回答by loknath

This function return the fibonacci series

此函数返回斐波那契数列

/**
     * @param startElement   
     * @param secondElent
     * @param length  :length of fibonacci series
     * @return fibonacciseries : contain the series of fibonacci series
     */
    public int[] createFibonacciSeries(int startElement, int secondElent,
            int length) {
        int fibonacciSeries[] = new int[length];
        fibonacciSeries[0] = startElement;
        fibonacciSeries[1] = secondElent;
        for (int i = 2; i < length; i++) {
            fibonacciSeries[i] = fibonacciSeries[i - 1]
                    + fibonacciSeries[i - 2];
        }

        return fibonacciSeries;
    }

回答by Gopi Kiran S

import java.util.*;

class MyFibonacci {

    public static void main(String a[]){

         int febCount = 15;
         int[] feb = new int[febCount];
         feb[0] = 0;
         feb[1] = 1;
         for(int i=2; i < febCount; i++){
             feb[i] = feb[i-1] + feb[i-2];
         }

         for(int i=0; i< febCount; i++){
                 System.out.print(feb[i] + " ");
         }
    }
}

回答by Immers Cherub

public class FibonacciExercitiu {

public static void main(String[] args) {


    int result = fib(6); //here we test the code. Scanner can be implemented.
    System.out.println(result);

}

public static int fib(int n) {

    int x = 1;
    int y = 1;
    int z = 1; //this line is only for declaring z as a variable. the real assignment for z is in the for loop.

    for (int i = 0; i < n - 2; i++) {
        z = x + y;
        x = y;
        y = z;

    }

    return z;
}

/*
1.   F(0) = 1 (x)
2.   F(1) = 1.(y) =>Becomes x for point4
3.(z)F(2) = 2 (z) =>Becomes Y for point4 // becomes X for point 5
4.(z)F(3) = 3                            // becomes y for point 5
5.(z)F(4) = 5 ..and so on
*/

}

}

回答by Rafael Amsili

 public static int[] fibonachiSeq(int n)
 {
     if (n < 0)
         return null;

    int[] F = new int[n+1];

    F[0] = 0;
    if (n == 0)
        return F;
    F[1] = 1;

    for (int i = 2; i <= n; i++)
    {
        F[i] = F[i-1] + F[i-2];
    }



    return F;

 }

回答by vinay kumar gupta

Using while loop

使用while循环

class Feb
{
    static void Main(string[] args)
    {
        int fn = 0;
        int sn = 1;
        int tn = 1;

        Console.WriteLine(fn);
        Console.WriteLine(sn);
        while (true)
        {
            tn = fn + sn;

            if (tn >10)
            {
                break;
            }
            Console.WriteLine(tn);
            fn = sn;
            sn = tn;
        }
        Console.Read();
    }
}

回答by Roqaia al rofou

public class Febonacci {

公共课费波那契{

public static void main(String[] args) {
    int first =0;
    int secend =1; 
    System.out.print(first+","+secend);
    for (int k=1;k<7;k++){
        System.out.print(","+(first+secend ));
        if(k%2!=0)
            first+=secend;
        else 
            secend+=first;
        }
    }
}

回答by Jacob Bickley

I'm a beginner in java as well however I've found an easy way to create a Fibonacci number using an array. The basic principle of a Fibonacci number is the addition of the current number and the number that came before. Here is my code:

我也是 Java 的初学者,但是我找到了一种使用数组创建斐波那契数的简单方法。斐波那契数的基本原理是当前数与前数相加。 这是我的代码:

//Creation of array 
int [ ] fib = new int[size];

//Assigning values to the first and second indexes of array named "fib"
fib [0] = 0;
fib [1] = 1;

//Creating variable "a" to use in for loop
int a = 1

//For loop which creates a Fibonacci number
for( int i = 2; i < size ; i++)
{   
  fib[i] = a;
  a = fib[i] + fib[i-1];
}