求一个数学难题的算法

F0=1000
F1=F0*a-30;
F2=F1*a-30;
F3=F2*a-30;
... ....
Fn-1=Fn-2*a-30
Fn=Fn-1*a-30

Fn=0;
输入n;
输出a

 #include <stdio.h>

int n;
double a;

double fun(int tInputValue)
{
    if(tInputValue == 0)
        return 1000.0;
    else
        return fun(tInputValue-1)*a-30;
}

int main()
{
    scanf("%d", &n);

    for(a =0; a < 1000000; a=a+0.01)
    {
        if( 30-fun(n-1)*a < 1e-06 )
        {
            printf("%lf\n", a);
            break;
        }
    }
}

那就把它移项到左边然后从后往前推算就可以了。第一项是30/a

把F0、F1……依次代入,得出Fn=1000a^n-30a^n-1-30a^n-2……-30a^0=0
简化,得:Fn=(100/3)a^n-a^n-1-a^n-2……-1=0//这个式子可以用循环写出来
其实是求n次幂方程,但是这个方程窝不会求。
思路只能到这惹~

66666666666669

F1 = aF0 - 30
F2 = aF1 - 30 = a^2F0 - 30a - 30
Fn = a^nF0 - 30(a^(n-1) + a^(n-2) + ... + a^0)
(1)当a=1时,Fn=1000-30n,不可能为0(因为n为整数)
(2)当a!=1时,Fn=1000a^n - 30(a^n-1)/(a-1)=0,化简为100a^(n+1)-103a^n+3=0
因式分解得(a^n - 1)(100a^n -3)=0,因为a!=1,所以100a^n-3=0,a=(3/100)^(1/n)

发现因式分解错了,楼主请忽略我的答案吧。。。