00:00
行了,同学们,那昨天呢,咱们这个也其实也留了一些作业啊,我不知道大家有没有有没有去做这些东西啊,呃,你比如说我们在这个。在哪呀?在零七里边,好像在最后的时候,我们说了一个东西是吧。递归这一块有一个什么呀,阶层是不是。这个阶层大家做了吗?应该做了吧,来,Public class recursion test,零四。是吧,Public s static whiteman,其实这个呢,代码就和那个求和那个是一样了,只不过变成星号是不是,哎,那么这边怎么做呀,我们有一个N是不是,假如说五的阶乘,那么这个时候呢,我们可能去调用一个方法,是不是static啊,Void啊,返回int,假如叫阶层啊阶乘。N in的类型N是吧,传过来这个参数啊,传过来这个N这个参数啊,然后接下来呢,我们在这块呢,就可以怎么着考虑这个,呃,使用这个递归的方式啊,递归的方式如果说怎么着啊。
01:08
哎,其实我们这个就是五什么呀,乘以几啊四对不对,乘以三乘以几啊,二乘以几啊,一是这样的一个过程啊,那又涉及到N减一的问题,是不是N减一啊,然后接下来就是阶乘怎么着啊,哎,阶乘。阶乘啊,这个方法递归调用N怎么着啊,减一对吧,N减一,那么原先是N在这干什么呀,加上去它,那现在是N乘以它是不是,哎,然后呢,接下来在这儿呢,你就可以判断一下,因为N减一直减,减一直减一直减,这个方法去调用自己嘛,这就是递归嘛,是不是,哎,这种方式咱们呢,应该怎么着呢?哎,应该有结束条件,那结束条件是什么?一是减一,减一最后等于一的时候,如果说我们N呢,要是等于等于一的时候,对吧?那么这个时候呢,Return什么呀,哎,一就行了,那么如果是这样的话,那我们就可以怎么着,让N乘以阶乘N减一。
02:02
啊,计算完这个结果是不是啊,计算完这个结果之后呢,接下来怎么着啊,哎,我们把这写个分号啊,然后怎么着,把这个哎结果result给它返回就可以了,当然如果说你要是要想要想节省这个变量的话,你可以怎么做,可以这样做,就像我昨天所说的是吧?哎,你可以直接return,把它拿过来放到这个位置上,然后接下来后边呢,啥也不写,哎,你就写这个对不对,写上这个。拿过来这个放到那。是一个道理啊,是一个道理。那么这边能不能用呢?我们来看看接成啊,然后接下来把N传进去,是不是传进去之后呢,有一个什么呀,有一个结果呗,哎结果你看结果result是不是,哎system.out.print打印输出结果啊,这样的话就使用递归的方式,这个方法去调用我这个方法本身。是不是啊,这就是递归啊,递归啊在这是用乘号的方式啊,乘号的方式行,那这块呢,咱们来把这个呢编译一下。
03:01
Java c呢,编译一下我们的啊呃,REC test0几,这是零四是吧,点Java啊,然后Java去运行TEST04走。好来看最后结果是一百二是不是,哎最后的这个结果就是120,但如果说你这个数据如果特别大啊,你说这个数据是100,我们看是怎样的是吧?哎编译预警。这是咋回事啊?零。什么原因?N是100。但是。50。编译运行。N是十。编译运行。
04:04
是没问题。是吧,20呢。你看就出了。是不是就出了?只能到15。啊,只能到15,不能太大了啊啊,那你说我这块变变成浪类型行吗。变成浪类型可以吗,同学们?返回的是浪类型。就存完之后这个数据。哎哟,他好像超了,超出超了整数的范围是吧,超出了整数的范围啊,应该是,嗯,超出整数范围看看行不行啊。
05:07
这个值。是这个值。20的阶乘。30的阶层呢?那100那100超了吧。哎哟,这个就超了。这个太脆弱了哈。太脆弱了,这个这东西。25。编译运行。嗯。Double是带的啊,Double是带的,那如果用double来看,Double容。指数是25是吧,底数是前面那个数,这是25。
06:07
嗯,它可以表示更大的数啊,表示更大的数。但是一点多它显示是这样显示的啊,行,咱们先不用管这个东西了啊,不用管这个东西了,那咱们这块的话,还是用我们int就完事了啊,用int就完事了,这是我们计算机存储数据的本身的一个问题啊。咱们也解决不了咋的是吧,咱们还能把那底层的一个给它改了,也不太现实啊,咱也改不了边运行。嗯。我的。边运行。是吧,啊这样。好了,这个呢,是咱们用递归的方式,如果用for循环的方式实现呢。情况我就不写了吧。就是如果说用for循环的方式,这个这个这个该怎么该怎么写。
07:01
比如说还是还是这个吧,拿过来。对吧,哎,然后这块呢,咱们假如说要接成二吧,假如说。那在这应该有一个什么呀?哎,Int类型什么呀吧,等于一呗,For号循环是不是,哎in型I等于几呀?哎,等于二吧,I干啥呀。哎,小于什么,等于N呗,哎干啥呀,佳加在这怎么着啊,Result乘等谁就行了是不是?哎return什么呀?哎out,那这块呢,我们可能直接调一下s.out.print line打印输出什么呀,叫做接成二,然后传个五。是不是,哎,我们再来看看加va c的编译加运行。少东西了。A625。
08:01
这是哪的问题?乱写。120啊,这个位置写错了各位啊,乘等I啊,等ii呢,等于2I小于等于I加加啊,然后这块你千万别等于零啊,如果你等于零,这个结果就完了,就等于零的话,零乘任都得零了啊。要等于零,然后这个是一,然后怎么算都是零是吧?哎,加上C编译加运行你看。怎么算是零啊,所以这块呢,你要注意是从这个一开始吧,那I的话就从二开始就行了,对吧?哎,二开始二到几几结束啊,到N结束呗,哎,到N结束,然后呢,加加,然后累乘就行了,每当它乘等I,这不是N啊,不是N,这是I啊。啊,然后最后返回这个结果就可以了,我的结成啊编译运行行,这就看到这儿啊。
我来说两句