古典问题:兔子产子(非波那契数列)(1,1,2,3,5,8,13,21.............)
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%121d %121d",f1,f2);
if(i%2==0)printf("\n");/*r控制输出,每行四个*/
f1=f1+f2;
f2=f1+f2;
}
}
用筛法求100之内的素数.
#include<math.h>
main()
{int i,j,n,a[101];
for(i=2;i<=100;i++)
a[i]=i;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{if(a[i]!=0 &.&.a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
printf("\n");
for(i=2,n=0;i<=100;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
n++;}
if(n==10)
{printf("\n");
n=0;}
}
}
还有其它的方法不
高手们
[此贴子已经被作者于2005-11-21 13:13:56编辑过]
第一次循环
f1 = f1 + f2; f1 = 1 + 1; f1 =2;
f2 = f1 + f2; f2 = 2 + 1; f2 =3;
第二次循环
f1 = f1 + f2; f1 = 2 + 3; f1 = 5;
f2 = f1 + f2; f2 = 5 + 3; f2 = 8;
第三次循环
f1 = f1 + f2; f1 = 5 + 8; f1 = 13;
f2 = f1 + f2; f2 = 13 + 8; f2 = 21;
自己用脑袋循环一下就懂了
关于递归,可以这样理解:
从前有座山,山上有座庙,庙里有个老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚对小和尚说:..........
当然,这个理解也不完全,它没有解释递归的返回问题。不过大体意思就是这样了!
LZ,你的程序有错吧