当前位置:  技术问答>java相关

《core java》里两个算法没看懂,哪位指点指点

    来源: 互联网  发布时间:2015-02-10

    本文导语:  中文版1卷里p62。3.9递归算法中说 接下来,我们来看看递U3法是怎样计算彩票中奖率的。如果从50个号码中抽出1个号码。 很简单,你的机会就是50分之1。一般情况下,我们可将此写成 public static long lotteryOdds(int high,...

中文版1卷里p62。3.9递归算法中说
接下来,我们来看看递U3法是怎样计算彩票中奖率的。如果从50个号码中抽出1个号码。
很简单,你的机会就是50分之1。一般情况下,我们可将此写成
public static long lotteryOdds(int high, int number)
{ if(number == 1) return high;
...
}
    还不算太槽!现在,我们来看看从50个号码中抽6个号码的中奖可能性。随便乱抓一个号
码。就有50次机会。另外,还要从49个号码中抽5个号码。啊哈[一个简单得不得了的问题。
抽出5个号码就有lotteryOdds(49,5)种方法。我们就有50*lottery0dds(49,5)种选出这6个号码的
的可能性.事实上,我们必须做点傻事、并把其结果除以6,为什么呢?因为程序根据我们首选
的号码,对每个组合都进行了6次计算。
    把50和6替换成常规参数——high和number,得到的递归法就是
    public  static  long  lotteryOdds(int  high,  int  number)
    (    if  (number  <=  O)  return  0;  //  just  in  case
    elSe  if  (number  ==  1)  return  high;
    else  return  high*loteryOdds(high  —  l,number  —  1)  //  number;
    }
    注意,每次递归调用中,number参数在逐渐减少,而且,最终递减至1和0。在编写递归方
法时,这一点是相当重要的:你必须确定递归终止。

******我还是不明白为什么要除以6。那句对每个组合都进行了6次计算。指的什么组合的计算。

####################################################################
问题2:p65 3.10.3
3.10.3数组作为返回值使用
    方法的返回值类型也可以做为一个数组。一个方法在计算一序列值时,这一点才真正有了
用武之地。比如,我们来写一个方法(从一次模拟彩票中抽出一系列号码),并返回一个序列
号。方法头是:
    public  static  int drawing(int  high,  int number)
    在例3.9中,这个方法制作了两个数组,一个容纳了号码1、2、3……hi9h,幸运号码就是
从这些号码中抽出来的。另一个数组容纳的是抽出来的号码。当这个方法退出时,第一个数组
就会被丢弃,并最终被当作垃圾回收。这个方法将第二个数组当作自己的值返回。
程序
/**
 * @version 1.00 07 Feb 1996 
 * @author Cay Horstmann
 */

import java.util.*;
import corejava.*;

public class LotteryDrawing
{  public static int[] drawing(int high, int number)
   {  int i;
      int numbers[] = new int[high];
      int result[] = new int[number];
      // fill an array with numbers 1 2 3 . . . high
      for (i = 0; i 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 一个崩溃程序,什么时候有core,什么时候没core
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • 有调试经验的高手请进:调试程序如何生成core?如何调试core文件定位错误。
  • 请问怎么可以让程序出segment fault 的时候自动生成core 文件? 以前习惯调试core ,现在怎么突然没有了?
  • 为嘛CORE文件这么大,装些啥玩意哦,如何限制CORE文件大小
  • core dump为何不能生成core文件
  • 求教:程序运行时core掉,用gdb察看core显示no debugging symbols是什么原因
  • 请教apt-get install x-window-system-core gnome-core synaptic的"synaptic"有什么作用
  • 程序运行时core掉了,但不产生core文件!
  • Fedora Core3 怎样硬盘安装????Fedora Core3 的disk1里没有dosutils文件
  • 请问:用gdb进行调试时,core文件是怎么生成的啊?
  • LINUX程序运行时有CORE文件吗?
  • 博客 iis7站长之家
  • 急!!! 怎么通过core文件,查找程序中的错误!???
  • 程序出core
  • 关于core dump
  • 无法生成core文件
  • 怎么使用core dump
  • *~ core是什么意思?为什么以这种形式
  • 双硬盘安装Fedora Core的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3