2008年4月18日 星期五

遞迴小練習

困難度:★

輸入X,Y,Z

A(1)=X
A(2)=Y
A(3)=Z
A(4)=A(1)+A(2)+A(3)
A(5)=A(2)+A(3)+A(4)
.
.
.
A(k)=A(k-3)+A(k-2)+A(k-1)

每一個項數都是前三個項數的和
求出第A(target)的值

按繼續閱讀看CODE

##CONTINUE##

#include<stdio.h>

#define target 15

int x,y,z;

int term(int number)
{
switch(number)
{
case 1:
return x;
case 2:
return y;
case 3:
return z;
default:
return term(number-1)+term(number-2)+term(number-3);
}
}

int main()
{
int i;
scanf("%d %d %d",&x,&y,&z);

for(i=1;i<=target;i++)
printf("%d ",term(i));

printf("\n");
}


執行結果

1 2 3
1 2 3 6 11 20 37 68 125 230 423 778 1431 2632 4841

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...