嗯,用java写算法还真有点不适应呢。
这个题其实就两种思路,递归,循环。
/*C++循环--编译成功*/
#include <iostream>
using namespace std;
int main(void) {
long long int n, i;
long long int result = 0;
long long int arr[1000000];
cin >> n;
arr[0] = 1;
arr[1] = 1;
if (n == 1 || n == 2)
{
cout << 1 % 10007;
}
else if (n != 1 && n != 2)
{
for (i = 2; i < n; i++)
{
arr[i] = (arr[i - 1] + arr[i - 2]) % 10007;
result = arr[i];
}
cout << result;
}
return 0;
}
/*java递归--超时*/
import java.util.Scanner;
public class Main {
public static int f(int n)
{
int x;
if(n == 1 || n == 2)
return 1 % 10007;
else
x = f(n - 1) + f(n - 2);
return x;
}
public static void main(String[] args) {
int n;
Scanner a = new Scanner(System.in);
n = a.nextInt();
System.out.print(f(n) % 10007);
}
}
/*java循环 --编译成功*/
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int n, i;
int result = 0;
int[] arr= new int[1000000];
Scanner a = new Scanner(System.in);
n = a.nextInt();
arr[0] = 1;
arr[1] = 1;
if (n == 1 || n == 2)
{
System.out.print( 1 % 10007);
}
else if (n != 1 && n != 2)
{
for (i = 2; i < n; i++)
{
arr[i] = (arr[i - 1] + arr[i - 2]) % 10007;
result = arr[i];
}
System.out.print( result);
}
}
}