//递归法 /* ================================================================== 题目:求F(60),当中F(n)定义例如以下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(int n) { if(n==0) return 0; else if(n==1) return 1; else if(n%2==0)return F(n/2)+3; else if(n%2!=0) return F((n-1)/2)+F(n-2); } void main() { int n; float p; printf("n="); scanf("%d",&n); p=F(n); printf("F(%d)=%.2lf\n",n,p); } /* ====================================================================== 评: 第三等式中。令t=2n,故t%2==0,n=t/2; 第四等式中,令t=2n+1,故t为奇数,则n=(t-1)/2,2n-1=t-2;(程序中n作为t用) 建立递推关系,就非常easy编写了。 ======================================================================== */