确定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);
}
我的问题在于尝试精确定位指定 N的值。如同,如果我想在序列中找到第6个元素,即8,我将如何找到该数字,只有那个号码?
答案 0 :(得分:9)
在您的代码中,num
以0 th Fibonacci编号开始,num1
作为1 st 。因此,要找到n th ,您必须迭代步骤n
次:
for (loop = 0; loop < n; loop ++)
{
fibonacci = num + num2;
num = num2;
num2 = fibonacci;
}
System.out.print(num);
并且只在你完成后打印它。
当循环计数器loop
的值为k
时,num
保持k th Fibonacci数和num2
(k + 1) )个
答案 1 :(得分:1)
要找到第n个数字,我们需要知道斐波纳契数的长度。您可以使用Java的Integer.toString(int)
函数将int转换为字符串。然后,使用该字符串可以确定转换后的斐波纳契数的长度。
编辑:删除代码b / c可能是hwk问题
答案 2 :(得分:1)
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);
答案 3 :(得分:0)
import java.util.*;
public class fibonacci{
public static void main(String[]args){
Scanner input=new Scanner(System.in);
String n=System.getProperty("line.separator");
int count=0,x=0,y=1,sum;
System.out.println("Enter a number: ");
int num=input.nextInt();
for(count=0;count<=num;count++){
System.out.print(" "+ x);
sum=x+y;
x=y;
y=sum;
}
}
}
答案 4 :(得分:0)
我希望我的回答会有所帮助。我试图用动态编程方法解决它。您只需要跟踪两个元素,直到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;
}
}
答案 5 :(得分:0)
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int num = 1;
int num2 = 1;
int fibonacci;
for (int i=1; i<n; i++) {
fibonacci = num + num2;
num = num2;
num2 = fibonacci;
}
System.out.print(num);
}
答案 6 :(得分:-1)
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;
}
}