遞歸數(shù)列a(n) = r1*a(n-1) + r2*a(n-2)
其中r1 r2是常數(shù),a1 a2已知,按照順序a1 a2 r1 r2 n輸入?yún)?shù),則返回這樣一個(gè)遞歸數(shù)列的第n項(xiàng)值。類型均為double
#ifndef FINDAN_H
#define FINDAN_H

#include <cmath>

// a(n) = r1*a(n-1) + r2*a(n-2), give the a1, a2, r1, r2 and n
double findAnWithDegreeOfTwo( double a1, double a2, double r1, double r2, int n )


{
double x1;
double x2;
double u1;
double u2;
double det = r1*r1 + 4*r2;
double result;

if ( det < 0 )
return 0;
else if ( det > 0 )

{
det = sqrt( det );
x1 = ( r1 + det ) / 2;
x2 = ( r1 - det ) / 2;
u1 = ( a1*x2 - a2 ) / ( x1*( x2 - x1 ) );
u2 = ( a2*x1 - a1 ) / ( x2*( x1 - x2 ) );
result = u1*pow( x1, n ) + u2*pow( x2, n );
return result;
}
else

{
x1 = r1 / 2;
u2 = ( a2 - x1*a1 ) / x1*x1;
u1 = a1 / x1 - u2;
result = ( u1 + u2*n ) * pow( x1, n );
return result;
}
}

#endif
其中r1 r2是常數(shù),a1 a2已知,按照順序a1 a2 r1 r2 n輸入?yún)?shù),則返回這樣一個(gè)遞歸數(shù)列的第n項(xiàng)值。類型均為double











































