Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何找到第n个斐波那契数?_Java_Loops_For Loop_Fibonacci - Fatal编程技术网

在java中,如何找到第n个斐波那契数?

在java中,如何找到第n个斐波那契数?,java,loops,for-loop,fibonacci,Java,Loops,For Loop,Fibonacci,确定斐波那契序列很容易就能得出: int num = 0; int num2 = 1; int loop; int fibonacci; System.out.print(num2); for (loop = 1; loop <= 10; loop ++) { fibonacci = num + num2; num = num2; num2 = fibonacci; System.out.print(" " + fibonacci); } int num=

确定斐波那契序列很容易就能得出:

int num = 0;
int num2 = 1;
int loop;
int fibonacci;
System.out.print(num2);
for (loop = 1; loop <= 10; loop ++)
{
    fibonacci = num + num2;
    num = num2;
    num2 = fibonacci;
    System.out.print(" " + fibonacci);
}
int num=0;
int num2=1;
内环;
int-fibonacci;
系统输出打印(num2);

对于代码中的(loop=1;loop,
num
以第0个Fibonacci数开始,而
num1
以第1个开始。因此,要找到第n个,您必须重复步骤
n
次:

for (loop = 0; loop < n; loop ++)
{
    fibonacci = num + num2;
    num = num2;
    num2 = fibonacci;
}
System.out.print(num);
for(循环=0;循环
只在完成后才打印


当循环计数器
loop
的值为
k
时,
num
保存第k个Fibonacci数和
num2
第(k+1)个

要查找第n个数字,我们需要知道Fibonacci数的长度。您可以使用Java的
Integer.toString(int)将int转换为字符串
函数。使用该字符串,可以确定转换后的斐波那契数的长度

编辑:删除代码b/c可能的hwk问题

导入acm.程序。*;
import acm.program.*;

public class FibonacciToN extends ConsoleProgram {

    public void run() {

        println("This program will display a table of Fibonacci numbers up to value n.");
        int n = readInt("Enter an integer for value n: ");
        int result = sequence(n);  

    }

    private int sequence(int n) {

        int a = 0;
        int b = 1;

        while (a < n) {  
            println(a); 
            a = a + b;
            b = a - b;
            }

        return a;
    }
}
公共类FibonacciToN扩展控制台程序{ 公开募捐{ println(“该程序将显示一个Fibonacci数表,最大值为n”); int n=readInt(“为值n:”输入一个整数); int结果=序列(n); } 专用整数序列(整数n){ int a=0; int b=1; 而(a
导入java.util.Scanner;
公共类斐波那契{
公共静态void main(字符串[]args){
扫描器i=新扫描器(System.in);
字符串n=System.getProperty(“line.separator”);
整数计数=0,x=0,y=1,和;
System.out.println(“输入一个数字:”);
int n=i.nextInt();
for(count=0;count
int n=5;//要查找的斐波那契数的位置
int fibonacci=0,num=0,num2=1;

对于(int loop=1;loop我希望我的答案有帮助。我尝试用动态规划方法解决它。您只需要跟踪两个元素,直到n之前的一个索引。当您的代码存在时,答案将是元素n-1和n-2的总和

public class Fibonacci {

public static void main(String[] args) {
    System.out.println(fib(12));
}

/**
 * Calculate the Fibonacci of n with two int variables and one temp variable. This is using dynamic programming.
 * Time complexity of this approach is O(n). Space complexity of this approach is O(k).
 * 0,1,1,2,3,5,8,13,21,34,55,89,144,...
 *
 *
 * @param n The nth Fibonacci number
 * @return The nth Fibonacci
 */
public static int fib(int n) {
    if (n == 0 || n == 1) {
        return n;
    }
    // Element 1
    int element1 = 0;
    // Element 2
    int element2 = 1;
    // Move the 2 elements window till one index before the nth.
    for (int i = 2; i < n; i++) {
        // Move the 2 elements window forward.
        int temp = element2;
        element2 = element1 + element2;
        element1 = temp;
    }
    // Return the nth Fibonacci by summing Fibonacci n-1 and n-2
    return element1 + element2;
}
公共类Fibonacci{
公共静态void main(字符串[]args){
系统输出println(fib(12));
}
/**
*用两个int变量和一个temp变量计算n的Fibonacci。这是使用动态规划。
*该方法的时间复杂度为O(n),空间复杂度为O(k)。
* 0,1,1,2,3,5,8,13,21,34,55,89,144,...
*
*
*@param n第n个斐波那契数
*@返回第n个斐波那契
*/
公共静态整数fib(整数n){
如果(n==0 | | n==1){
返回n;
}
//要素1
int元素1=0;
//要素2
int元素2=1;
//将“2个元素”窗口移动到第n个之前的一个索引。
for(int i=2;i

}

这绝对是家庭作业……你说的“序列中的第6位”是什么意思?你是把所有斐波那契数串联起来,然后数数,如
112358132134…
?还是你只想要第n个斐波那契数?如果你想要的是第8个“位”,而不是第6个,您希望得到的输出,
21
3
?在序列中,第一个数字是1。第二个数字是1。第三个数字是2…等等。如果我想找到第六个数字(即8),第八个数字将是21,第九个32…等等,我怎么找到它呢?似乎你想要的是第n个斐波那契数,而不是数字。这不是家庭作业,但我感谢大家的帮助,不管+1,但有几个小问题:(1)没有第0个斐波那契数。(2)斐波那契数列可以说是从序列
0,1
1,1
开始的;你选择的定义决定了哪一个是第一个斐波那契数。通常,第n个斐波那契数
F(n)
如果你愿意,是
(p^n-(1-p)^n)/sqrt(5)
p=(1+sqrt(5))/2
。所以
F(0)
,第0个斐波那契数为0。由于斐波那契数增长较快,最好在计算中使用
biginger
。我忘了删除该代码中未使用的字符串n。
int n=5;//position of the fibonacci number to find
int fibonacci=0,num=0,num2=1;
for(int loop=1;loop<n;loop++)
{
   fibonacci=num+num2;
   num=num2;
   num2=fibonacci;
}
System.out.println(num);
public class Fibonacci {

public static void main(String[] args) {
    System.out.println(fib(12));
}

/**
 * Calculate the Fibonacci of n with two int variables and one temp variable. This is using dynamic programming.
 * Time complexity of this approach is O(n). Space complexity of this approach is O(k).
 * 0,1,1,2,3,5,8,13,21,34,55,89,144,...
 *
 *
 * @param n The nth Fibonacci number
 * @return The nth Fibonacci
 */
public static int fib(int n) {
    if (n == 0 || n == 1) {
        return n;
    }
    // Element 1
    int element1 = 0;
    // Element 2
    int element2 = 1;
    // Move the 2 elements window till one index before the nth.
    for (int i = 2; i < n; i++) {
        // Move the 2 elements window forward.
        int temp = element2;
        element2 = element1 + element2;
        element1 = temp;
    }
    // Return the nth Fibonacci by summing Fibonacci n-1 and n-2
    return element1 + element2;
}