(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);
}
}
Благодаря предварително!
Благодаря!
Това предположих, че е ограничение за входа, който ще се подава в Judge; ако е ограничение за обработка в самата задача, тогава възниква въпросът защо и двата варианта горе минават 100/100 без проверка за вход > 50 :-)
Иначе, това според мен не трябва да е част от кода:
}else{
System.out.println(n);
}
понеже тогава на конзолата ще се принтира число (реално това е входът), което не е част от поредицата на Фибоначи, което противоречи с условието на задачата.
Да. Замислих се, че не е редно да има вход над 50. Но май Judge винаги прави проверка с вход 0
Ето и моя, за 0 е доста дразнещо наистина.
И ще получиш 85/100...