python各种函数及用法(python-回调函数和递归函数)
python各种函数及用法(python-回调函数和递归函数)3 2 1 1 2 3 [Finished in 0.1s] 注:结果为什么是3/2/1 1/2/3 为什么是3、2、1和1、2、3?#递归函数 num=3; def myfunc(n): print(n); if n>1: myfunc(n-1); print(n); myfunc(num); 运行结果:递归函数不能写成死循环,如果写成死循环则很容易引起内存溢出。统计目录大小一定要善于使用草图来完成程序的设计
回调函数
一个函数中的参数是另一个函数的名字。
#回调函数 i=10; j=20; def myfunc(i j f): return f(i j); def sum(a b): return '{} {}={}'.format(a b a b); print(myfunc(i j sum)); 注:f参数将来会是sum函数的名字,f被称之为回调参数、sum被称之为回调函数。
运行结果:
10 20=30 [Finished in 0.1s]
递归函数
函数体内调用本函数。
a函数调用a函数
递归函数不能写成死循环,如果写成死循环则很容易引起内存溢出。
统计目录大小
一定要善于使用草图来完成程序的设计
#递归函数 num=3; def myfunc(n): print(n); if n>1: myfunc(n-1); print(n); myfunc(num);
运行结果:
3 2 1 1 2 3 [Finished in 0.1s] 注:结果为什么是3/2/1 1/2/3
为什么是3、2、1和1、2、3?
首先,程序的执行是自上而下、自左至右的。
下图是递归函数的草图,
第一次执行时,输出两个3,由于满足if条件,到myfunc时,继续执行myfunc2,所以第一次没有输出两个3。
第二次执行时,输出两个2,由于满足if条件,到myfunc时,继续执行myfunc1,所以第二次没有输出两个2。
第三次执行时,输出两个1,由于不满足if条件,到myfunc时,该函数结束执行,此时输出两个1。
综上所述,第一次输出两个3、第二次输出两个2、第三次输出两个1,但是程序的执行是自上而下、自左至右的。所以最后输出的结果是我们看到的3、2、1和1、2、3。
不知道大家明白没有?
递归草图 myfunc(3){ print(3); myfunc(2){ print(2); myfunc(1){ print(1); print(1); } print(2); } print(3); } 递归函数的应用
使用递归函数完成数字累加之和。
#递归函数 num=10; def myfunc(n): if n>1: return n myfunc(n-1); else: return 1; print(myfunc(num)); # 递归草图 # myfunc(3): # return 3 myfunc(2){ # return 2 myfunc(1){ # return 1; # } # } # } # # # def myfunc(n): # if n>1: # return n myfunc(n-1); # else: # return 1;
运行结果:
55 [Finished in 0.1s]
原因如下:
最后第一次返回的3 第二次返回的3 第三次不满足条件返回的1=6
结语感谢阅读,欢迎在评论区中发表自己不同的观点,若有其他问题请在评论区留言,喜欢的朋友请多多关注转发支持一下。
头条号:ys0202
----------------END----------------