00:00
好,接下来呢,我们来说一下我们函数的另一个知识点啊,先创建一个新的文件保存一下,哎,我们零七叫做一个递归。递归啊,点一个这个TY,呃,那什么叫做递归呢?啊,什么叫递归呢?那我们先,哎。看这么一个东西啊,看这么一个东西,呃,我们来干嘛呢?哎,我们来尝试,哎求什么呢?哎,求这个十的这个阶层啊的阶层,那十的这个阶乘呢,那实际上我们如果用我们的这个。符号来表示的话就是十什么呀,十这来一个叹号,这就叫一个十的阶乘啊,十的阶乘,那这是什么意思啊,这什么意思?我们来说一下这个阶乘啊,可能有些同学可能已经忘了什么是阶层,哎,我们来说一下,如果是一的阶层啊,一的阶层等于什么呢?就等于一啊,就等于一,那二的阶层呢?二的阶乘等于什么?哎,二的阶乘等于乘以二,哎,等于一乘以二还等于什么呀?哎,等于二啊,等于二,然后来看三的阶乘等于什么?等于一乘以二乘以三等于什么呢?等于一个这个三啊,等于这个六啊,等于六,然后呢,再来一个四的阶乘等于个一乘以二乘以三乘以四等于个什么呀?哎,24,所以这里边我们说的阶乘,所谓的阶乘就是求几的阶乘,就是从一乘以到几,我求十的阶乘就是一乘以二乘以三乘以四乘以五,一直乘以到十,我求100阶乘就是一乘以乘以三乘以四乘以五乘以六,一直乘到什么呀100,这就求阶乘啊,求阶乘诶,那同学说了,那老师你这要求十的阶乘还不简单吗?不就是一乘以二乘以三,一直乘以到十吗?哎,对,的确没错,但是我们现在希望的什么?现在我要求十的阶乘,我希望的是什么呢?哎,但是果我改一下我可以干嘛呀?哎,我想求十的阶乘就求。
02:00
谁的集成,或者这里边我们直接说干嘛呢,创建一个这个函数可以干嘛呢?哎,可以用来,哎求我们这个任意数的一个阶乘啊,任意数的阶乘对吧?这是我们最终目的啊,最终目的,但是我们先来尝试第一种啊,我们先来干嘛呢?哎,求十的阶乘,那十的阶乘怎么求,哎十的阶乘,你说呢,简单呗,哎普呢,我们这来一个什么呢?哎,我们这来一个这个一乘以二乘以三乘以四乘乘以四乘以五乘以六乘以七乘以八乘。乘以九。然后这乘以十乘以十,然后这一保存,一求这个是不是就十的阶成,哎,这就十的结成,非常简单,但是很明显这不太现实,这么做非常的傻,为什么傻呢?因为如果假设我要求100阶成,你是不是也要乘到100呀,我要求1万的阶成,你是不是也要乘到1万呀?哎,非常的麻烦,所以像这种你看123456789这几个值是不是?
03:01
顺次的去递增的呀,所以遇到这种问题,我们第一个想的是我能不能创建一个循环,把这几个几个数求出来,对吧?我能不能创建一个循环把这几个数求出来,所以在这儿呢,我直接来一个负循环,负循环我来什么呢?哎,负循环我来一个,哎因什么呢?哎,我们还是什么呀?哎润注意了,这回润质你可就不能写个十了,因为你写十它是不是从零到零到九啊,哎,从零到九,那我们说了,你求阶成你可不能出现零,你出现零是不是谁的阶乘就得零了,所以这时候不能出现零,我应该写什么呀?起始值是一,到哪结束啊,哎,起始值是一,终点是什么呀?是十,那这个时候我要问你了,你说说我这I的值是多少?哎,I的值说那注意了,我们认知这函数是包括开始不包括结束的,所以现在I的值应该是什么呀?应该是一到九啊,一到九,哎,那同学说了,那你这个,哎,你这样即使乘起来,比如说我这即使乘起来,它是不是也是从一乘以到九,这是九的阶乘,它不是十的阶乘啊,那怎。
04:02
怎么算呀,那怎么算在这我们来干嘛呢?我们来创建一个变量来干嘛呢?哎,来保存我们这个结果,直接来一个N等于什么呢?N等于十,哎,那注意了,我现在的N的值是什么呀?是十啊,N的值是十,也就是说我只需要让N不断的去乘以I,第一次I是一,然后就是十乘以一,第二次是不是I是二,然后就是十乘以二了,第三次就是20乘以三,也就是我把N设置成十,那是不是我再去跟NN这个I这个一到九这几个数一相乘,是不是就是阶乘了,哎,就是阶乘了啊,所以这个时候我就直接干嘛呀,哎,我直接这么计算一个来什么呢?哎,N乘等于哎,啊,我让N和这个H相乘在这儿,我们只需要打印一下NN,就是我们最后要的那个结果,我这一执行是不是362800,跟我们第一次算的结果是一样的呀,哎,结果是一样的啊,那这个就是我们说的一个求十的阶乘啊,求十的阶乘好,那现在我们十的阶乘已经求出来了们。
05:02
用的是这种方式,那现在我们来看,我们现在要干嘛呢?我要创建一个函数,可以求任意数的阶乘,我要怎么做,要怎么做,哎,那一说创建函数先甭想,我先把函数定义出来啊,先把函数定义出来,直接定义Facebook,我们叫做一个哎,Factory叫做一个这个这个叫做阶乘啊,这个英语英文是吧,然后这来一个括号,是不是先把函数写出来呀,那问题就来了,这函数题怎么定义啊?哎,函数题怎么定义啊,那注意了,我们这个函数其实就是对我们之前的一些程序的一个抽象,所以函数体我们之前是不是写一个十的阶成啊,我们先把这给它粘过来,你都不用想先给它粘过来,为什么先粘过来,因为这个是我们求什么呀,我们函数是要编写一个通用的方法,对吧,我要编写的是一个通用的方法,所以这里边我先把这个什么呀,这个并不是通用的,这是求实的对吧,这是求实的,所以我们先把它写上啊,先把它写上,然后我们再干嘛呀,哎,我们再给把它那些需要改的地方给它。
06:02
改一下,那改什么,也就是说有些不有一些东西我们是需要作为参数传进来的啊,参数传进来的,那我们来看这里边哪个是我们需要作为参数传进来的,首先第一个现在我这N等于十啊,N等于十,那我们要求几的阶乘,我们这是不是要求十的阶乘啊,所以N等于十,那我要求20的阶乘呢?因N等于20啊,我要求30的阶乘呢,是不是N应该就等于30啊,哎,求40就N等于40对吧?所以N的值是不是写死的,哎,不是,N的值是不是会变的呀,哎,会变的,所以这个值我们是不是要作为一个参数传进来呀,哎,参数传进来,所以这里边我们定一个变量叫什么呢?叫N啊叫N来我们这来写一下这个文档字符串啊文档字符串。这个是我们这个factory这个函数啊,这个函数。该函数用来求什么呢?哎,求我们这个任意数的一个阶乘啊,任意数的一个阶乘,然后这里边我们来说一下参数,参数我们说第一个是我们这个NN是什么?N是我们要求的什么呀?诶要求阶层的数字,诶要求阶层的一个数字,也就是说你要求谁的阶层,如果你要求十的阶乘,你就N就等等于什么呀,等于十你要求什么呀?哎,20的阶乘N就等于20,所以这时候还用不用对N进行初始化了?哎,就不用对N进行初始化了啊,就不用对N进行初始化了,好,那接下来再说,现在我有这个N了,那这个N我们这有了,那我们是不是还需要整一个变量来保存一下结果呀?哎,我们最好不要直接对参数赋值,因为我们避免有别的作用,所以在这儿我来创建一个变量来干嘛呢?哎,来求什么呢?
07:42
哎,来保存我们这个结果啊,结果直接来一个result result等于什么?Result应该等于N啊,Result应该等于N,如果N是十,Result就是十啊十,因为待会我们是不是要拿这个result和这个I去相乘啊,哎,相乘,那这个时候我这个应该就是什么了,Result的星等于N,我要拿result和这个等于I啊,我要拿造的和I去相乘,那接下来我们再看,那现在我们这儿还有一个润润,我这应不应该写十。
08:11
哎,不应该写十,为什么?因为现在我是在求十个阶乘,所以我这块取的值是一到九,一到九再跟这个造这个十去相乘,是不是求十的阶乘啊,但是我如果要求100的阶乘呢?这还是不是十了,这是不应该100啊,我100取到一到99,然后再跟100去相乘,是不是就是100的阶乘啊,所以这的值应该是最终是多少?哎,这的值应该最终是你求谁的阶乘,它是不是应该就是多少,哎,你求100阶乘,这应该100,求1000的阶乘,这应该就是1000,而我们要求N的阶乘,这应该是什么,这应该就是一个什么呀,就是一个N啊,就是一根,这个时候我一保存,那现在经过这么一个运算以后,我们这个,哎最后这个result就是什么,是不是就是我们这个结果呀,哎,就是我们这个结果,那我们可以干嘛呢?我们这样。我们呢,把这个result作为返回值给它返回re UT啊,返回我们这个result,然后在这这函数调用完了,我们来干嘛呢?哎,我们来求十的这个接成怎么求,我直接打印了啊,直接打印了来个调一下我们这个函数,然后我就传一个十,这一保存一直行,是不是也是这个数字,哎,也是这个数字,那现在我要想求20的阶乘,直接来一个20走一个是不是也求出来了,哎,也求出了啊,这个就是我们说的一个什么呀,求阶乘的这么一个函数,其实呢,不难啊,其实不难,待会儿呢,自己来写一下,那好接着我们来说,那这个东西跟我们说的递归又有什么关系啊,跟我们说的递归有什么关系,要注意了。
09:40
地柜。递归这里边我们具体要说的是一个递归式的函数,哎,递归式的函数,所以注意递归这个概念并不是我们编程语言里独有的啊,并不是我们编程语言独有的,那递归我们简单举个例子,什么是递归?我们相我相信大家这个在这个小时候都听到过这么一个故事,是吧?哎,从前有座山,哎,从前有座山。
10:08
哎,然后什么呢?哎,山里有座庙啊,有座庙然后什么呢?哎,庙里有个这个老和尚讲故事。哎,然后什么呢,讲的什么故事呢。讲的什么故事呢?哎,然后是不是接下来我就可以去复制了,哎,从前有座山,山里有座庙,然后我这直接写一个那什么呀,诶省略号,相信大家都曾经被别人蒙过是吧?听过这个故事啊,从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么故事呢?哎,从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么故事呢?然后这个故事是不是就可以无限的去循环下去,哎,无限去循环下去,那这个实际上就是一种什么呀,就是一种递归,所以递归简单来讲就是什么呢?递归简单来理解。
11:03
哎,就是什么呢?哎,就是自己去引用自己,哎,自己去引用自己,那我们这个像这个从前有座山,它本来就是一个故事,对吧,但是他故事里边还有一个故事,这个故事还是从前有座山,那从前有存里边可能还有故事,这个故事可能还是什么呀,从前有座山故事里边是不是就包含这个故事啊,诶自己又去引用自己,这就是一个递归,那什么叫做递归式函数呢?递归式函数,递归式函数就是在我们函数中干嘛呢?哎,自己调用自己啊,自己调用自己,所以这里边我们来看一啊,我们直接写一个来一个,我们这么定义一个函数,我们叫做一个FNFN呢,怎么叫递归式函数,我直接在FN里边,我再调一个FN啊,再调一个FN,这个就叫做一个递归式函数,我在FN里边定义了一个函数叫FN,在FN里边我又掉了一个FN,这就是一个递归式函数,那你猜猜这个函数会有什么特点?
12:02
它有什么特点,哎,那这个函数会有一个问题啊,我现在定一个函数,如果在这我去调一个FN,注意这个时候是不要执行的啊,我先住了不要执行,这时候会什么效果,我这先掉FN函数在FN里边是不是又掉FN啊,哎,FN执行了,别执行以后FN里边是不是又掉FN,因为我掉的还是FN呀,它又执行了,然后干嘛又掉又掉又掉又掉,它是不是无限去掉啊,你掉FNFN掉FNFN再掉FNFN再掉FN,它是不是无限去掉自己啊?哎,无限去掉自己,那首先我们来说这个就是一个递归啊,这就是一个递归函数,自己去调用自己就是一个递归啊,就是一个递归,那这个递归我们叫什么呢?哎,叫做一个无穷递归。无穷递归,哎,如果这个函数被调用。哎,被调用什么呢?哎,我们的程序的这个内存会什么呢?会溢出,诶溢出效果。
13:00
哎,类似于我们这个死循环啊,类似于死循环,因为我们在这儿来看他是不是无限在掉自己啊,就像这个讲故事一样,无限在讲这故事,无限在讲这故事,那什么时候停了,诶你这人累死了就停了,那同样我们这函数也是无限在掉,无限在掉,无限在掉,什么时候停了?诶当你内存被它占满的时候,函数自然就停了,所以这个东西跟我们这个死循环是基本上是一样的啊,跟我们这个死循环基本是一样的,所以这个就不要用了啊,这种函数就不要写了,千万不要写啊,千万不要写,诶那同学说了,那老师那你这个递归有什么用啊,哎,有什么用啊?哎,那首先注意了,递归它是我们解决问题的一种方式。递归是我们这个递归啊,是我们这个解决问题的一种方式。一种方式,它和什么呢?哎,它和我们这个循环很像啊,它的和我们这个循环很像,那我们说了它的整体思想是什么呢?哎,它的整体思想是,哎将一个这个大问题。
14:05
哎,大问题分解为什么呢?分解为一个什么呀,小问题啊,一个个的这个什么呀,哎小问题,哎小问题直到什么呢?诶直到我们这个问题什么呢?问题无法分解时,哎在干嘛呢?诶再去我们这什么呀,哎,解决我们这问题啊解决问题也就是什么呀,一个大问题,它会逐渐把一个大的问题分解成一个个小的问题,分解成最小,最小那个问题已经没有办法再分解的时候,那这个时候我在开始在干嘛呀,在运算,它实际上是这么一个思想,它和我们循环呀很像啊,和我们这个循环非常非常的一个像,那现在说到这儿可能还不太明白,那我们来说一下怎么用,那怎么用,那比如说啊,我们先说一下我们这个递归式函数的两个要件。递归是函数的一个两个要件,两个要件我们的第一个要件,我们叫做一个什么呢?哎,我们叫做一个基线条件。
15:03
基线条件,基线条件指什么?基线条件就是我们这个问题可以被分解为的什么呢?最小问题啊,可以被分解为的最小问题,就是说这个问题到什么时候就已经分解完了,分解到不能分为止啊,不能分为止啊,如果什么呢?诶,到达基线条件以后,我们的递我们的递归干嘛呀?当满足基线条件时。基限条件是我们什么呀?哎,我们的递归就什么呀,哎就不再执行了,哎就不再执行了,也就是说这个有点像我循环的那个什么呀,停止条件啊,停止条件,这是我们说的一个基线条件,这是我们最小的那个问题,然后第二一个我们的什么呢?我们的一个叫做递归条件啊,递归条件就是什么呢?哎,就是将我们这个问题继续分解的条件。分解条件,也就是说诶,当你满足什么条件的时候,我才我要对这个问题进行分解,这个基线递归条件有很多啊,可能有很多,有多了也可能有一个,对吧?那这就我们说一个递归条件啊,两个要件,基限条件,递归条件缺一不可的,尤其是基线条件,像这种就没有基限条件,它一直在对函数进行递归,一直在递归,没有基限条件就导致它变成了一个什么呀,无穷递归啊无穷递归,所以是不行的,那现在我们来看一下我们怎么来创尝试创建一个递归,那这样我先呢定义一个函数。
16:33
还是啊,我们拿我们这个阶乘这个来演示啊,阶乘这个来演示,那我们来看看成这个东西,我们怎么来去定义递归,那我们来看啊,假如说啊,我现在要求十的阶乘,我们说十的阶乘是一乘以二乘以三,一直乘以十,那九的阶乘呢?九的阶乘是不是就是。一乘以二乘以三,一直乘以到九啊,哎,所以问你了,我能不能说这个十的阶乘等于什么?十的阶乘是不是就等于十去乘以九的阶乘。
17:06
对吧,你想想九的阶乘不就是从一一直乘到九吗?我再乘一个十,是不是就从一乘以十就变成十的阶乘了,对吧?那我们来看那九的阶乘呢?我能不能说是什么,是不是从九乘以八的阶乘?的阶乘对吧?哎,八的阶乘,那如果是八的阶乘呢?我等于什么?哎,我等于这个叫做一个。八乘以七的阶乘。这关系能看懂吧,哎,只要你稍微学过一点数学,这个一定是能看懂的啊,能看懂的,但是这里边我们逐渐逐渐去分是吧,七的阶乘等于七乘以六的阶乘,五的阶乘等于六的阶乘等于六乘以五的阶乘,五的阶乘等于四的乘以哎五乘以四的阶乘,然后四的阶乘等于三乘以二的阶乘,二的阶乘等于什么?二的阶乘等于二乘以一的阶乘,那问题最后一的阶乘等于什么?一的阶乘等于什么?一的阶乘是不是就等于一呀?哎,一的阶乘就最后就等于一,哎就这么一个关系,那我们说了,如果是11的阶乘呢?11的阶乘是不是就是等于十,诶11的11乘以十的阶乘啊,哎,是它是有这么一个关系的啊,这么一个关系的,所以你会发现这样我实际上是不是就在把这个问题逐渐的去。
18:19
拆开呀,哎,十的阶成等于什么呀?十乘以九的阶成,然后我再拆九的阶成等于什么呀?九的阶成等于九乘以八的阶成,八的阶成等于什么呀?等于八乘以七的阶乘,直到拆到哪,拆到了一的阶乘,一的阶乘还能不能再分了,不能了,一的阶乘是不是结果是固定的,就是一啊,哎,就是一,所以这时候就不能再拆了,那所以利用这个东西我们就可以做一个什么呀,做一个递归啊,做一个递归,那现在我们来看怎么做,还是这里边我们接收一个参数叫做一个N,那作用是一样的啊,它这个描述起来信息都是一样的啊,描述起来都是一样的诶,该函数用来求任意数的阶乘啊,参数N就是要求什么呀,阶乘的一个数字,那也就是说现在我们是不是要求N的阶乘啊,哎,那我们先来做第一种情况,我们第一个是什么呀?先做这个基线条件,什么叫基线条件,我们来判断一下什么呢?哪个是基线条件,也就是说到我们不能再分解这个问题的那个就是极限条件嘛,那我们说了这里边哪是不能分解的,哎,不能分解的是不是就是一啊,哎,就是一,所以判断我们这个N。
19:19
是否为一啊,是为一,如果为一则什么呢?哎,则此时。哎,不能什么呀,不能再继续递归啊,不能再继续递归,说白了这是我们寻递归这个终止的一个条件,所以在这儿我直接写一个,直接写一个if,我们来一个N等等于一啊,如果N等于一了,如果N等于一了怎么办?那N等于一我们是不是就在求N的阶乘啊,N等于一我们就在求N的阶,一的阶成,一的阶成就是什么呀?哎,那就是一,返回一就完了啊,返回一完了,为什么返回一,因为什么?哎,因为一的阶成就是一,就是一二,一的阶成就是一,然后什么呢?所以直接什么呀?哎,直接返回一啊,直接返回一,然后再往下,如果没有进入到这个判断,是不是证明你没有满足基线条件呀,也就说你没有再求一的阶程,对吧?没有在求一的程,那这里边下边是什么呀?是我们的递归条件在这儿,我们是不是该进行递归了,哎,该进行递归了,那怎么递归。
20:21
先说他们还是啊假设,假设N的值是二。N的值是二,我这应该返回谁?我这是不是应该返回的是二乘以一的阶乘啊,这是尾代码啊,没它不能这么写啊,我简单表展示一下啊,一的阶乘,那如果这是什么呢?N的值是三,我是不是应该返回三乘以二的阶乘啊?如果N的值是十,我是不是应该返回什么呀?哎,十乘以九的阶乘啊,懂这意思吧?好,我现在问你这问题了,现在这个十应该是谁?这个十是不是就应该是N呀?哎,就应该是N,那这个九呢?这个九实际上是不是就是N减一呀?哎,N减一,所以在这儿我如果要按照上边推导的公式来算的话,我真应该去返回什么,返回一个N乘以N减一的阶乘,那最后是不是就是N的阶乘啊?哎,就是N的阶乘,那同学说了,老师,你这不神经病吗?这么写明显是不是很麻烦呀?哎,的确有点麻烦,但是说了老师我们N知道N知道,但是N减一的阶乘我们不还是依然不知道吗?那要怎么办呢?怎么办?看着了我们有没有求阶。
21:27
成的函数啊,我们这个factory是不是就是一个求阶乘的函数啊,所以在这儿我直接调一下factor。直接调一下,那这个是不是就是N减一的阶乘,哎,就是一个N减一的阶乘,那N减一的阶乘再乘以N,那是不是就是。N的阶成,哎,那这个就是一个最典型的一个递归函数,我们就写完了,它行不行啊,我们来看一下啊,我们来看一下直接啊,我们来调一下还是啊直接打印啊,我们来一个这个factory,来一个这个十啊,我们还是看十,十的结果,我们清楚来那这块啊,我这块这叹号没删啊,叹号没删,这一执行是不是还是这个结果呀?哎,结果是一样的啊,那这个就是我们说的一个递归,有同学看到这儿可能没太明白,我们来简单说一下啊,遇到这种问题别着急,你先举个数啊,举个数,比如说我的N是一,N是一,到这是不是条件满足了,条件满足直接返回一,下边还执不执行了,哎,不执行了,一旦执行准特下边是不是都结束了,哎,N是一的情况,那假如说我N是二,N是二,然后在这判断条件满不满足,不满足吧,不满足,然后是不是走这个呀,哎,走这个返回一个二乘以一个factor什么呀,FACTORY1对吧,Factoryy factor。
22:45
这一,然后是不是又掉这函数啊,又掉这函数,这判断了一个什么呀?Ifn等等于一等不等于一等于一等于一,这是不是相当于什么?这个是不是在调用函数,它是一返回值啊,返回的是几?返回的是一,那是不是就在返回二乘以一啊哎,二乘以一,然后再看如果N是三,N是三还是这是不是N等于一不是吧?哎,不是,然后是不是走这个呀,走的是一个三乘以三之二,三之二,刚才我们说了这是不是N减一,是不是就是二啊,三之二是返回什么?三之二,刚才我们算了是不是返回的是二啊,哎,返回的是二,那所以这是什么呀?这就是一个六啊,这就一个六,那同理,我们这如果是四,四还是四等等一满不满足,不满足是不是还走这儿啊,那就是四乘以什么?四乘以这个factor一个四减一是不是就FACTORY3呀,三刚才算了是一个六,所以这就是一个什么呀,四乘以六是不是等于。
23:38
24,哎等于24,那这个就是我们说这么一个这个递归,通过递归我们来实现的是什么呀?哎,这样一个功能啊,这样一个功能,这个好好看一下,是比较典型的一个什么呀,递归啊,比较典型的一个递归,当然如果你是第一次干这个,其实不太好理解,捋一下其实不难啊,对比着我们这个什么呀,哎对比着我们这个从天有酸这个东西来记一下啊来记一下,哎来说一下啊,我们的什么呢?哎,我们的递归和我们这个循环呀,哎类似啊类似基本上是什么呀?哎是可以互相代替的啊,基本上可以互相代替的,也就是说你可以用递归来实现的,来解决问题,一般也都是可以通过什么呀循环来解决的,你可以通过循环来解决的问题,一般也都是可以什么呀,通过递归来解决的,所以这个递归并不是我们必须掌握的一个技能啊,并不是第我们必须要掌握一个技能,那他们各有什么特点,循环编写起来干嘛呢?编写起来比较什么呀,比较容易啊。
24:38
比较容易,但是阅读起来呢,哎,阅读起来呀,哎稍难。稍难一些啊,因为循环呀,它执行几次呀,我们得读是吧,如果这个循环很复杂,你读起来很很费劲啊,很费劲,而我们这个递归呢,哎,递归编写起来呀,诶编写起来难,哎,编起来难,但是什么呀?哎,但是方便什么呀,方便阅读啊,方便阅读,为什么呀,因为这里边其实就是在不断把一个大问题是不是给它拆分一个小问题啊,所以你只要稍微有点经验,这个代码一定是很容易就看懂的啊,因为大家在不断的对问题进行拆分,把N的问题拆成N减一,N减一,N减一,继续减一,继续减一,继续减一,不断继对问题进行拆分,那实际上就是把一个大问题拆分成什么呀,一个一个小的问题啊,小的问题,所以关于递归这个东西啊,不是说要求你必须会写啊,不是说我以后我递归好,我以后全都用递归,没有这个要求,递归你说我不用行不行,没问题啊,你压根儿你都不用递归,一点问题都没有,你全都用循环一点问题都没有,但是这里边我们说递归的目的是什么?递归最低要求你得能读懂啊,你得能读懂,你得能看懂啊,这是一个递归。
25:47
在函数内部又掉了一个函数,你得能大概能明白这个东西是什么,什么意思,别人写了你能用,哎,别一看就干嘛了,就懵了啊,就懵了,所以得能阅读懂这个递归,好,那这递归我们这一块知识点就说完了是吧,大家伙你们自己来尝试着先用我们这个普通的循环的方式来求一下这个阶层,然后再尝试干嘛呀,创建一个递归来求一下这个阶乘啊阶乘好,然后呢,这一块我们来留一个,留两个练习。
26:19
练习啊练习,哎,然后什么呢?我们这来创建一个函数,创建一个函数,我们叫做一个power啊power power干嘛呢?哎,Power来检查,哎来求啊,来求一个。求任意数字的这个,哎密。这样吧,来为任意数字做,我们叫做一个幂运算,幂运算哎,其实就跟我们什么呀,我们那个N心心,哎哎,如果你是一个十,我这来一个心心二,那是不是求十的二次方啊,哎,求十的二次方就是把我们这个运算转换成一个什么呀,函数啊,转换成一个函数,这个可以用递归来完成啊,可以用递归完成啊,自己来尝试一下,这个函数叫power啊,Power明给你了,然后第二个还是有一个练习。
27:14
练习干嘛呢?哎,我们来创建一个函数,创建一个函数,哎,创建一个函数用来干嘛呢?用来哎检查一个任意的这个字符串是否是回文啊,是否是回文字符串,哎,如果是返回处,返回处,否则返回false啊,否则返回false,哎,那这里边要注意了,什么叫回文字符串啊,回文字符串哎,不是我们这个回族的文字是吧?什么叫回文字符串,就是说这个字符串哎叫做从前往后。念哎和什么呢。和这个从后往前念是什么呀?是一样,哎,是一样的,那这个就是一个什么呀?回文字符串啊,这个就是一个回文字符串,比如说我们来一个abcba,这就是一个什么呀?回文字符串,你从前面念abcba,从后边念abcba啊,正反都一样,这就是一个什么呀回文,那我们这个练习要求你创建一个函数,检查这个字符段是否是回文,如果是返回处不是返回false啊,这两个都可以用递归来完成啊,尝试着自己来写一下,我们来填一下。
我来说两句