我正在寻找一个明确的解释我的问题(不寻找代码),但如果一些代码有助于解释自己,那么请做..谢谢:)
问题:
- 使用Java
- 主类要求用户输入整数(fibonacci N term),然后按顺序计算所有斐波纳契数,直到达到该项为止。
- 所有内容都存储在一个整数类型的arraylists中。 (每个数字都被分解并存储在它自己的索引中,因此它就是它自己的“元素”,可以这么说。)
例如,我的目标是这样:
“请输入N斐波那契术语:”
10
现在,在内部,我已将2个基本案例存储在一个arraylist中,如下所示:
ArrayList:[1,1]
现在,我想在用户输入之后让我的arraylist看起来像这样:
[1,1,2,3,5,8,1,3,2,1,3,4,5,5]
(注意它在最后一个学期停止了55,并注意到两位数值如何分解为单独的元素。)
我打破数字没有问题,它只是给我带来困难的“计算”...提前感谢任何建议
答案 0 :(得分:2)
我将使用int
值生成Fibonacci值,并使用这些结果分解数字以添加到ArrayList。
答案 1 :(得分:1)
听起来你想要从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'副本。
答案 2 :(得分:1)
当我试图复制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;
}
你修改它的方法,这样你就可以得到你的字符串数组,但是现在我需要去吃午餐
答案 3 :(得分:1)
下面是制作字符串数组的方法。和小于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[]={"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};
答案 4 :(得分:1)
我认为这应该锻炼。
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)+ " ");
}
}
}
答案 5 :(得分:0)
为Fibonacci函数编写一个经典的(刚刚,非正则的,用于Java)。
好的,你不想要fib(N),所以改变你的循环测试,使其继续,直到达到&gt; = N.
此外,您不希望返回int,而是返回ArrayList。所以在你的函数中创建一个,在你的循环中添加它,然后返回它。
哦,你也想做那个奇怪的数字事情。不要改变你的功能#3;相反,使用它来获取Fibonacci数字的ArrayList,然后迭代它,将数字添加到新的ArrayList。
Alternate#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的生成。
答案 6 :(得分:0)
我不擅长解释。但我认为这段代码可以满足您的要求。
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);
}
}
答案 7 :(得分:0)
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);
}