(Java - TechFund) Arrays, more exercises, задача Recursive Fibonacci
Здравейте, някой дали може да ми каже защо в Judge това решение има 85/100 (един тест дава Runtime Error):
import java.util.Scanner;
public class RecursiveFibonacci {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.nextLine());
long[] fibonacci = new long[n];
for (int i = 0; i < n; i++) {
if (i == 0 || i == 1) {
fibonacci[i] = 1;
} else {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
}
System.out.println(fibonacci[n - 1]);
}
}
Докато това решение има 100/100:
import java.util.Scanner;
public class RecursiveFibonacci {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.nextLine());
long first = 0;
long second = 1;
long third = second + first;
for (int i = 0; i < n; i++) {
first = second;
second = third;
third = first + second;
}
System.out.println(first);
}
}
Благодаря предварително!
Благодаря много! Да, знам защо излиза Runtime Error, просто не предполагах, че ще е възможен вход "0", заради условието на самата задача:
"Constraints:
Всъщност, излиза 100/100 и без проверката за n== 1: при вход "1" се отпечатва "1" на конзолата и без тази проверка; Проблемът явно идва при вход "0", какъвто по условие не би трябвало да има, според мен.
Освен това в условието пише и "The first two elements are 1, 1.", което автоматично значи, че първият елемент от поредицата е "1", а не "0", и според мен не би трябвало въобще да се очаква да се отпечатва "0" (както става при вход "0") на конзолата щом първият елемент по условие е "1". Просто във втория вариант не съм обърнал внимание, че има случай, в който се отпечатва и "0" и затова е верен.