天天看點

C語言之函數調用17—遞歸法之中的一個般函數的調用(2)

//遞歸法

/*

==================================================================

題目:求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編寫了。

========================================================================