首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

某核反应堆有两类事件发生1高能质子撞击核子,质子被吸收,放出3个高能质子一个低能质子,低能质子撞击核子,质子被吸收,放出2个高能质子和一个低能质子。该怎么处理

2012-04-28 
某核反应堆有两类事件发生1高能质子撞击核子,质子被吸收,放出3个高能质子一个低能质子,低能质子撞击核子,

某核反应堆有两类事件发生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);} 

热点排行