E:\arithmetic\Fibonacci
O(n)
注意性能的要求 ,数特别大的时候要用long long 或者更大要改用其他方式处理
#include <stdio.h>
long long fn(int n);//long long
int main(int argc, char *argv[])
{//测试用例功能测试; 边界值(0,1,2),负面测试(-1) , 性能测试(100, 500)
int a[] = {-1,0,1,2,3,4,5,6,7,50, 100};
int i;
for(i = 0 ; i<sizeof(a)/sizeof(int) ; i++){
long long temp = fn(a[i]);//!!!! long long
printf("%lld\t", temp);
}
return 0;
}
long long fn(int n){
if(n < 0){
printf("error! n must more than zero !\n");
return 0;
}
if(n == 0){
return 0;
}
if(n == 1){
return 1;
}
long long t1, t2;//!!!long long
long long result;//!!!long long
t1 = 0;
t2 = 1;
int i;
for (i=2 ; i<=n ; i++){
result = t1+t2;
t1 = t2;
t2 = result;
}
return result;
}