小弟刚学不久,功力不够深厚,但为了能得分也只好献丑了。
一般情况下能用循环解决问题的,都不建议用递归,根据问题要求,我用while循环写了两个函数,并且已经在我机子上运行
class Num
{
public static long getNum(int n)
{
long [] num = new long [n];
if(n<=2)
{
return 1;
}
num[0] = 1;
num[1] = 1;
int i = 2;
while(i<n)
{
num[i] = num[i-1] + num[i-2];
i++;
}
return num[i-1];
}
public static int getIndex(long num)
{
long arr [] = new long[200] ;
if(num<2)
{
return 1;
}
arr[0] = 1;
arr[1] = 2;
int n=2;
do
{
arr[n] = arr[n-1] + arr[n-2];
n++;
}while (arr[n-1]<num);
if(arr[n -1] == num)
return n;
else
{
System.out.println(num+"不是数列中的元素");
return 0;
}
}
public static void main(String args[])
{
long i = getNum(100);
int j = getIndex(102334155L);
System.out.println("i="+i);
System.out.println("j="+j);
}