一个射击员打靶,请问连开10枪打90环的可能性有多少种?C语言递归实现,正确答案为92378,我的错在哪
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/31 19:47:58
一个射击员打靶,请问连开10枪打90环的可能性有多少种?C语言递归实现,正确答案为92378,我的错在哪
我的输出为184756,错在哪,
#include
int num = 0;
int score[10];
void
find (int remain,int n)
{
if (remain < 0 || remain > 10 * (n + 1))
return;
if (0 == n)
{
for (score[n] = 10; score[n] >= 0; score[n]--)
\x05{
\x05 if (score[n] < remain)
\x05 return;
\x05 else
\x05 num++;
\x05}
return;
}
for (score[n] = 10; score[n] >= 0; score[n]--)
{
find (remain - score[n],n - 1);
}
}
void
main ()
{
find (90,9);
printf ("num=%d\n",num);
}
我的输出为184756,错在哪,
#include
int num = 0;
int score[10];
void
find (int remain,int n)
{
if (remain < 0 || remain > 10 * (n + 1))
return;
if (0 == n)
{
for (score[n] = 10; score[n] >= 0; score[n]--)
\x05{
\x05 if (score[n] < remain)
\x05 return;
\x05 else
\x05 num++;
\x05}
return;
}
for (score[n] = 10; score[n] >= 0; score[n]--)
{
find (remain - score[n],n - 1);
}
}
void
main ()
{
find (90,9);
printf ("num=%d\n",num);
}
![一个射击员打靶,请问连开10枪打90环的可能性有多少种?C语言递归实现,正确答案为92378,我的错在哪](/uploads/image/z/17014687-7-7.jpg?t=%E4%B8%80%E4%B8%AA%E5%B0%84%E5%87%BB%E5%91%98%E6%89%93%E9%9D%B6%2C%E8%AF%B7%E9%97%AE%E8%BF%9E%E5%BC%8010%E6%9E%AA%E6%89%9390%E7%8E%AF%E7%9A%84%E5%8F%AF%E8%83%BD%E6%80%A7%E6%9C%89%E5%A4%9A%E5%B0%91%E7%A7%8D%3FC%E8%AF%AD%E8%A8%80%E9%80%92%E5%BD%92%E5%AE%9E%E7%8E%B0%2C%E6%AD%A3%E7%A1%AE%E7%AD%94%E6%A1%88%E4%B8%BA92378%2C%E6%88%91%E7%9A%84%E9%94%99%E5%9C%A8%E5%93%AA)
if (0 == n)后面的for循环是用来判断最后一枪的环数的,只可能产生一种可能性,但是按你的写法,num++最多可以在一个循环中运行11次(remain=0时)
函数修改如下即可输出正确答案
#include
int num = 0;
int score[10];
void
find (int remain, int n)
{
if (remain < 0 || remain > 10 * (n + 1))
return;
if (0 == n)
{
for (score[n] = 10; score[n] >= 0; score[n]--)
{
if (score[n] < remain)
return;
else
num++;return;
}
return;
}
for (score[n] = 10; score[n] >= 0; score[n]--)
{
find (remain - score[n], n - 1);
}
}
void
main ()
{
find (90, 9);
printf ("num=%d\n", num);
}
函数修改如下即可输出正确答案
#include
int num = 0;
int score[10];
void
find (int remain, int n)
{
if (remain < 0 || remain > 10 * (n + 1))
return;
if (0 == n)
{
for (score[n] = 10; score[n] >= 0; score[n]--)
{
if (score[n] < remain)
return;
else
num++;return;
}
return;
}
for (score[n] = 10; score[n] >= 0; score[n]--)
{
find (remain - score[n], n - 1);
}
}
void
main ()
{
find (90, 9);
printf ("num=%d\n", num);
}
一个射击运动员打靶,靶一共有10环,连开10抢打中90环的可能性有多少种?请用递归算法实现
一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算法编程实现.[中国某著
用递归算法编程:一个射击选手打靶,靶一共有10环,连10抢打中90环的可能有多少种?多谢大侠们相助!
请问如何用C语言实现下面的迭代和递归的两种算法
在一次打靶射击中,某个运动员打出的环数只有8、9、10三种,在作了多于11次的射击后,所得总环数为100,则该运动员射击
C语言程序题:1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现
某射击运动员在一次训练中,打靶10次的成绩为89环,已知前6次射击的成绩为50环,则他第七次射击时,击中的环数至少是__
打靶时,甲每打20次可中靶6次,乙每打10次可中7次,若两人同时射击一个靶,则他们都中靶的概率是?
打靶时,靶与射击者相距680米,射击后经三秒射击者听到打靶的声音,声速为340米每秒,求子弹飞行的平均速
c语言递归算法,有一个递归算法如下,则下列叙述正确的是( ).int maze(int a,int b,int c) {
打靶时,靶与射击者之间相距510m,射击后经过2s听到打击靶的声音,声音在空气中的速度为340m...
打靶时,A每打10次可中靶8次,B每打10次可中靶7次,若2人同时射击一个目标,则它们都中靶的概率是( )