某核反应堆有两类事件发生1高能质子撞击核子,质子被吸收,放出3个高能质子一个低能质子,低能质子撞击核子,质子被吸收,放出2个高能质子和一个低能质子。
假定开始时只有一个高能质子摄入反应堆,每一微秒一起一个事件发生,(对一个事件,当前所有的质子都会撞击核子),是确定N微秒时高能质子和低能质子个数?
条件是递归原理,顺序循环分支语句,函数。这3个参数。
#include<stdio.h>
main()
{
int i,n;
double g=0,d=0,s=0;
printf("请输入一个正整数:");
scanf("%d",&n);
if(n==1)
{g=3;d=1;s=4;}
else
g=3;d=1;s=4;
for(i=2;i<=n;i++)
{g=3*g+2*d;
d=s;
s=g+d;}
printf("%.0lf %.0lf %.0lf\n",g,d,s);
}
[解决办法]
多此一举的递归算法:
- C/C++ code
#include<stdio.h>void fun(double g, double d, int n){ if (n==0) printf("%.0lf %.0lf %.0lf\n",g,d,g+d); else fun(3*g+2*d,g+d,n-1);}main(){ int i,n; double g=1,g2,d=0; /*刚开始只有一个高能质子*/ printf("请输入一个正整数:"); scanf("%d",&n); fun(1,0,n);}