- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】83 打靶 面试例题1:一个射击运动员打靶,靶一共有10 环,连开1083 打靶 面试例题1:一个射击运动员打靶,靶一共有10 环,连开10
第 8章
循环、递归与概率
8.3 打靶
面试例题1:一个射击运动员打靶,靶一共有10 环,连开10 枪打中90 环
的可能性有多少种?请用递归算法编程实现。[中国某著名通信企业H 面试题]
解析:靶上一共有10 种可能——1 环到10 环,还有可能脱靶,那就
是0 环,加在一起共11 种可能。这是一道考循环和递归的面试题。我们
在这个程序中将利用递归的办法实现打靶所有可能的演示,并计算出结
果。读者会问,难道一定要使用递归?当然不是。我们也可以连续用 10
个循环语句来表示程序,代码如下:
for (i1=0;i1=10;i1++)
{
for (i2=0;i2=10;i2++)
{
for (i3=0;i3=10;i3++)
{
for (i10=0;i10=10;i10++)
{
if(i1+i2+i3+...+i10=90)
Print();
}
}
}
}
但是,上面的循环程序虽然解决了问题,但时间复杂度和空间复杂
度无疑是很高的。比较好的办法当然是采用递归的方式,事实上公司也
就是这么设计的。递归的条件由以下4 步完成:
(1)如果出现这种情况,即便后面每枪都打 10 环也无法打够总环
程序员面试宝典
数90,在这种情况下就不用再打了,则退出递归。代码如下:
if(score 0 || score (num+1)*10 ) //次数num为0~9
{
return;
}
(2 )如果满足条件且打到最后一次(因为必须打10 次),代码如下:
if(num == 0)
{
store2[num] = score;
Output( store2);
return;
}
(3 )如果没有出现以上两种情况则执行递归,代码如下:
for(int i = 0; i = 10; ++i)
{
//这里实际上为了方便把顺序倒了过来,store2[9]是第1 回
//store2[8]是第2 回……store2[0]是第10 回
store2[num] = i;
Cumput(score - i, num - 1,store2);
}
(4 )打印函数,符合要求的则把它打印出来。代码如下:
public static void Output(int[] store2)
{
for(int i = 9; i=0; --i)
{
Console.Write( {0},store2[i]);
}
Console.WriteLine();
sum++;
}
答案:
用C#编写的完整代码如下:
using System ;
public class M
{
//public static int[] store;
//相当于设置了全局变量
//这个全局变量sum 是包含在M 类中的
您可能关注的文档
- 【精选】6 多媒体技术应用专题6 多媒体技术应用专题.ppt
- 【精选】6-1_附加:钢筋下料计算例题6-1_附加:钢筋下料计算例题.ppt
- 【精选】6 项目质量管理6 项目质量管理.ppt
- 【精选】6 第三章 教育口语6 第三章 教育口语.ppt
- 【精选】6(新余四中 曾聪根)热学6(新余四中 曾聪根)热学.ppt
- 【精选】6-4多级放大电路6-4多级放大电路.pdf
- 【精选】5考试及大运动量时的营养5考试及大运动量时的营养.ppt
- 【精选】6-3微积分的基本公式6-3微积分的基本公式.ppt
- 【精选】6 光接口类型和参数6 光接口类型和参数.pdf
- 【精选】6-4安培环路定 理6-4安培环路定 理.ppt
文档评论(0)