1+1/3!+1/5!+1/7! ....
感覺..用C就是不好寫..(不是不好寫...是答案不好看)宣告int...
1=1
1/3!=0.16=0
1/5!=0.0083=0
1/7!=0.00019=0
.........
一堆長的像零的相加.....實在沒什麼好算的....
答案:
複製程式
void main(){ printf("≒1");}
看在O(1)的份上應該會有兩分...
不過..人都是貪婪的..有兩分了就想要五分..
暴力法...小就小把int 改成float照加
1=1
1/3!=0.16
1/5!=0.0083
1/7!=0.00019
發現....誤差頗大....
1/3!誤差一次,1/5! 誤差一次,1/7! 誤差一次,....誤差n次
一堆誤差加起來..應該就會沒有誤差(是這樣嗎)...
這樣應該有五分...
有了菜就想要吃肉...
那先通分了好..一堆int+-*/應該不會產生誤差
以7為例(只考慮分子)
1/1+1/3!+1/5!+1/7!
=7!+7*6*5*4+7*6+1 /7!
有沒有感覺....
沒有...沒有是正常的...再簡化一下
=7*6(5*4*3*2*1+5*4+1)+1
=7*6(5*4(3*2+1)+1)+1
感覺就是長的很像...
(a*b*c +1)
有沒有感覺....有一點點了..
複製程式
int sum_factorial(int n){
if(n<1){ return 1;}
else{ return (n*(n-1)*(sum_factorial(n-2)))+1;}
}
void main(){ printf("%2d",sum_factorial(7));}
這樣....應該會0分...
那個只是分子....
記得再除 n! <--只有一次誤差