F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),相信大家还记得,现在是已知F0=a,F1=b和fn的值,求:

来源:互联网 发布:浩方对战平台官方 mac 编辑:程序博客网 时间:2024/04/29 10:51

F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),相信大家还记得,现在是F0=a,F1=b,其中a的值和fn的值是已经知道,求:b。

这题其实相当的简单,我们都知道

 F(2) = F(1)+F(0) = a+b;

 F(3) = F(2)+F(1) = 2a+b;

 F(4) = F(3)+F(2) = 3a+2b;

其实F(n)的值是与a,b是有关系的。因为F(n)的值是已经知道的了,a的值是已经知道的,如果我们能知道F(n)时,a的系数和b的系数,我们就可以求出b。

现在假想一下:

     当a = 0, b = 1时,我们求出的F(n)的值 是不是 就是b的系数。

     当a = 1,b = 0时,我们求出的F(n)的值 是不是 就是a的系数。




public class FnTest {


/**
* @param args
*/
public static void main(String[] args) {
int fn = 3;
int n = 4;
int AX = fun(0,1,n);
System.out.println("AX = " + AX);
int BX = fun(1,0,n);
System.out.println("BX = " + BX);
int a = 0;
int b = (fn-a*AX)/BX;
System.out.println("b = " + b);
}
    static int fun(int a,int b,int n)
    {
    if(n==0)
    {
    return a;
    }
    else if(n==1)
    {
    return b;
    }
    else
    {
    return fun(a,b,n-2)+fun(a,b,n-1);
    }
    }
}

用递归算法计算了一下,原来在fun()中传参数刚好和之前假想的相反,我也不是好清楚,不过就是这样计算的。


原创粉丝点击