1. What is recursion
If a function contains a call to itself, the function is recursive. As an algorithm, recursion is widely used in programming languages. It usually converts a large and complex problem into a smaller problem similar to the original problem to solve. The recursive strategy can be described with only a small number of programs. The multiple repeated calculations required to solve the problem greatly reduce the amount of code in the program. For example, to calculate the product of 9-digit numbers from 1 to 9, the intuitive algorithm is 1*2*3*4*5*6*7*8*9. If you want to calculate the product of 1-10000, the intuitive algorithm is difficult. Implemented, and recursion can be easily implemented. Please look at the example:
def fact(n):#计算给定数字到一的乘积 if n<=1: return 1 else: return n * fact(n-1) print (fact(7))
The result is: 5040
Let’s use an example to see the recursive execution process:
def calc(n): print(n) if n/2 > 1: res = calc(n/2) return n calc(8)
The result is:
8 4.0 2.0
Look at this example again:
def calc(n): print(n) if n/2 > 1: res = calc(n/2) print('res:',res) print("N:",n) return n calc(8)
The result is:
8 4.0 2.0 N: 2.0 res: 2.0 N: 4.0 res: 4.0 N: 8
#2. Generator
The generator is a function with a yield statement. A function or subroutine returns only once, but a generator can pause execution and return an intermediate result, return a value to the caller and pause execution. When the generator's next() method is called, it will continue exactly where it left off
See an example below:
def func(): print('11111111') yield [1] print(2222222222) yield 2 print(3333333333) yield 3 ret=func() r1=ret.__next__() print(r1) r2=ret.__next__() print(r2) r3=ret.__next__() print(r3)
The result is:
11111111 [1] 2222222222 2 3333333333 3
Since python’s for loop has next() call and processing of StopIteration, use a for loop instead Manually iterating through a generator (or iterator of that thing) is always much cleaner and prettier. Example:
def func(): print('11111111') yield [1] print(2222222222) yield 2 print(3333333333) yield 3 ret=func() for i in ret: print(i)
The result is the same as before.
These simple examples should give you a little idea of how generators work. In addition to next() to get the next generated value, users can send values back to the generator [send()], throw exceptions in the generator, and ask the generator to exit [close()]
Below is a simple example that demonstrates these features.
def counter(start_at=0): count = start_at while True: val = (yield count) if val is not None: count = val else: count += 1
The generator comes with an initialized value that counts up by 1 for each call to the generator [next()]. Users have the option of resetting this value if they really want to call send() with the new value instead of calling next(). This generator runs forever, so if you want to terminate it, call the close() method. If we run this code interactively, we will get the following output:
>>> count = counter(5) >>> count.next() 5 >>> count.next() 6 >>> count.send(9) 9 >>> count.next() 10 >>> count.close() >>> count.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
The above article on in-depth understanding of Python function recursion and generators is what I share with you. The entire content is here, I hope it can give everyone a reference, and I also hope everyone will support the PHP Chinese website.
For more articles related to python function recursion and generators, please pay attention to the PHP Chinese website!

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

NumPyallowsforvariousoperationsonarrays:1)Basicarithmeticlikeaddition,subtraction,multiplication,anddivision;2)Advancedoperationssuchasmatrixmultiplication;3)Element-wiseoperationswithoutexplicitloops;4)Arrayindexingandslicingfordatamanipulation;5)Ag

ArraysinPython,particularlythroughNumPyandPandas,areessentialfordataanalysis,offeringspeedandefficiency.1)NumPyarraysenableefficienthandlingoflargedatasetsandcomplexoperationslikemovingaverages.2)PandasextendsNumPy'scapabilitieswithDataFramesforstruc

ListsandNumPyarraysinPythonhavedifferentmemoryfootprints:listsaremoreflexiblebutlessmemory-efficient,whileNumPyarraysareoptimizedfornumericaldata.1)Listsstorereferencestoobjects,withoverheadaround64byteson64-bitsystems.2)NumPyarraysstoredatacontiguou

ToensurePythonscriptsbehavecorrectlyacrossdevelopment,staging,andproduction,usethesestrategies:1)Environmentvariablesforsimplesettings,2)Configurationfilesforcomplexsetups,and3)Dynamicloadingforadaptability.Eachmethodoffersuniquebenefitsandrequiresca

The basic syntax for Python list slicing is list[start:stop:step]. 1.start is the first element index included, 2.stop is the first element index excluded, and 3.step determines the step size between elements. Slices are not only used to extract data, but also to modify and invert lists.

Listsoutperformarraysin:1)dynamicsizingandfrequentinsertions/deletions,2)storingheterogeneousdata,and3)memoryefficiencyforsparsedata,butmayhaveslightperformancecostsincertainoperations.

ToconvertaPythonarraytoalist,usethelist()constructororageneratorexpression.1)Importthearraymoduleandcreateanarray.2)Uselist(arr)or[xforxinarr]toconvertittoalist,consideringperformanceandmemoryefficiencyforlargedatasets.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 English version
Recommended: Win version, supports code prompts!

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download
The most popular open source editor

SublimeText3 Chinese version
Chinese version, very easy to use
