我正在寻找一个明确的解释我的问题(不寻找代码),但如果一些代码有助于解释自己,那么请做..谢谢:)
题:
- 使用Java
-Main类向用户询问整数输入(斐波那契N项),然后按顺序继续计算所有斐波纳契数,直到达到该项。
- 所有内容都存储在一个整数类型的arraylists中。 (每个数字都被分解并存储在它自己的索引中,所以它就是它自己的“元素”,可以这么说。)
例如,我的目标是这样:
“请输入N斐波纳契术语:”
10
此时,在内部,我已将2个基本案例存储在一个arraylist中,如下所示:
ArrayList:[1,1]
现在,在用户输入后,我试图使我的arraylist看起来像这样:
[1, 1, 2, 3, 5, 8, 1, 3, 2, 1, 3, 4, 5, 5]
(注意它在最后一个学期是如何停止的,55,并且还注意到两位数值如何被分解成单独的元素。)
我没有问题打破数字,它只是“计算”给我一个艰难的时间..提前感谢任何建议
听起来你想要从F1开始走斐腾纳奇序列,同时将数字作为整数追加到ArrayList<int>
。由于你想要base-10中的数字,我认为如果你将中间的Fibonacci整数转换为字符串,然后将字符串中的每个字符串作为字符数组逐步执行,这将是最容易阅读的。单步执行它,您可以通过从中减去char'0'将每个数字转换回整数。然后,您可以将该数字的数字版本附加到ArrayList<int>
。最终结果看起来像这样:
ArrayList<int> arrayList = new ArrayList<int>();
int a = 1;
int b = 0;
int n = 1;
while (n++ <= input) { // input being from the user
a += b;
b = a - b;
char[] fib = Integer.toString(b).toCharArray();
for (int i = 0; i < fib.length; i++) {
arrayList.add(fib[i] - '0');
}
}
这里要说的是,当你走上斐波纳契数列时,你不会弄乱你的数值。相反,在确定将进入ArrayList<int>
的每个数字的值之前,先缓存转换为字符串的'b'副本。
我将使用int
值生成Fibonacci值,并使用这些结果分解数字以添加到ArrayList。
好吧当我试图复制Arraylist时它出现了一个语法错误,而另一个响应没有足够的代码来显示它实际会做什么。无论哪种方式,你的老师给你的任务有点浪费编程。下面的内容将为您提供斐波那契数字的价值。 num是您想要的Fibonacci系列中的Fibonacci数。例如,如果你想要在你调用它时将fibi(6)放入系列中的第6个斐波纳契数。
public static int fibi(int num)
{
int initial =0; int addtoinitial = 1;
int keepinitial = 0;
for(int i = 0; i <num; i++)
{
keepinitial = initial;
initial = addtoinitial;
addtoinitial = keepinitial + addtoinitial;
}
return initial;
}
一种修改它的方法,这样你就可以获得你的字符串数组,但是现在我需要去吃午餐
下面是制作字符串数组的方法。并且小于46的原因是因为公共数组初始化长度是多长,并且您无法更改初始化之外的长度。您可以更改其中的每个部分。实际上对于使用它们的值的int Fibonacci数字如果你试图使用高于第46个斐波纳契数的任何东西,它将超出int的最大值。如果你使用long,如果你试图使用第92个斐波纳契数以上的东西,它会超出最大值一段时间。
public static void fibsmake(int num) {
fibsreallength= num;
int initial = 0;
int addtoinitial = 1;
int keepinitial = 0;
for(int i = 0; i<num&&i<46; i++) {
keepinitial = initial;
initial = addtoinitial;
fibs[i]=keepinitial+"+"+initial;
addtoinitial = keepinitial + addtoinitial;
}
}
public static String fibs[]={"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};
我认为这应该锻炼。
package p1;
import java.util.ArrayList;
public class NEWtEST {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList a =new ArrayList();
a.add(0);// enter the 1st elemnt of the list
a.add(1);// 2nd elemnt
int currIndex=1;
while(currIndex<50)//--- i set the limit as first 50 items
{
a.add(((Integer)a.get(currIndex))+((Integer)a.get(currIndex-1)));
currIndex++;
System.out.print(a.get(currIndex)+ " ");
}
}
}
替代#4,如果Nishant是正确的:从#3返回的ArrayList的索引2循环并向后看,如
sums.add("1");
sums.add("0+1");
for (int i = 2; i < fibs.size(); i++)
sums.add(fibs.get(i - 2).toString() + "+" + fibs.get(i - 1));
“当然,在这种情况下,您可以继续编辑原始的Fibonacci函数,并跳过fibs
ArrayList的生成。
我不擅长解释。但我认为这段代码可以满足您的要求。
import java.util.*;
public class Fibonacci {
public static void main(String[] args) {
long temp1=0;
long temp2=1;
long temp3;
int temp4;
//number of elements to generate in a series
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
System.out.println("Enter Number ");
int num = sc.nextInt();
if(num==0)
list.add(0);
else if(num==1)
list.add(1);
else
{
list.add(0);
list.add(1);
//create the Fibonacci series and store it in an arraylist
for(int i=1; i < num; i++){
temp3= temp1+temp2;
temp1= temp2;
temp2=temp3;
do{
temp4=(int) temp3%10;
temp3= temp3/10;
list.add(temp4);
}while(temp3!=0);
}
}
//print the Fibonacci series numbers
System.out.println("Fibonacci Series upto " + num);
System.out.print(list);
}
}
public static void main(String[] args) {
List<Integer> numList = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the size of the list:\n");
int userInput = sc.nextInt();
System.out.println("Your choose is"+" "+userInput);
int a = 0;
int b = 1;
int c = 0;
while(c<userInput) {
c = a + b;
a = b;
b = c;
numList.add(c);
}
System.out.println("Fibonacci list:"+" "+numList);
}