[英]separate 2 digit numbers in fibonacci series
我正在嘗試分離2位數字長的斐波那契序列,但第一位數字給出零
int[] fib = new int[input];
int[] fib2 = new int[input];
fib[0] = 0;
fib[1] = 1;
fib2[0] = 0;
fib2[1] = 1;
for (int i = 2; i < input; i++) {
fib[i] = fib[i - 1] + fib[i - 2]; // first fibonnaci sequence to output
fib2[i] = fib2[i - 1] + fib2[i - 2]; // second fibonnaci sequence to output
fib[i] = separate(fib[i]); //get the second digit of the fibonacci sequence
fib2[i] = separate2(fib2[i]);//get the first digit of the fibonacci sequence but it output zero's
}
public static int separate(int x) {
//int result = x;
x = x % 10;
return x;
}
public static int separate2(int y) {
//int result = x;
y = y / 10;
return y;
}
正常斐波那契數列是1,1,2,3,5,8,13,21,34,55,89輸出應為1,1,2,3,5,8,1,3,2,1,3, 4,5,5,8,9
首先,您使用未正確初始化的數組生成列表。 (已在編輯中更正。) 。
fib2[0] = 0; //first digit is 1 ... not 0 by the way
fib2[1] = 1;
第二個問題是您更改了fib[i]
的值,但需要計算下一個值,因此您需要首先生成完整列表或使用不同的列表。
但是,當然,為什么要生成兩次列表,一個就足夠了,您可以使用不同的值來存儲結果(而不是擦除以前的值,而是需要生成下一個值。)。
使用三個數組:
int[] fib = new int[input];
int[] fibDigit1 = new int[input];
int[] fibDigit2 = new int[input];
for (int i = 2; i < input; i++) {
fib[i] = fib[i - 1] + fib[i - 2]; // first fibonnaci sequence to output
fibDigit1 = separate(fib[i]);
fibDigit2 = separate2(fib2[i]);
}
嘗試試圖獲得個位數之前填充正常序列的陣列
for (int i = 2; i < input; i++)
{
fib[i] = fib[i - 1] + fib[i - 2];
fib2[i] = fib2[i - 1] + fib2[i - 2];
}
for (int i = 2; i < input; i++)
{
fib[i] = separate(fib[i]);
fib2[i] = separate2(fib2[i]);
}
或通過一點操作,僅需計算一個序列即可開始
for (int i = 2; i < input; i++)
fib[i] = fib[i - 1] + fib[i - 2];
for (int i = 2; i < input; i++)
{
fib2[i] = separate2(fib[i]);
fib[i] = separate(fib[i]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.