猫史档案馆


麻烦帮我一个忙

用户:ᝰ乙酰基水杨酸ᝰ乙酰基水杨酸查看:58 回复:4 评论:17 创建时间:2020-02-20T13:42:48


这什么意思?
def function1(n):

    if (n == 0):
        return 1
    else:
        return (n * function1(n - 1))


回复

上一页第 1 页 / 共 1 页下一页
wrmdcxywrmdcxy

def function1(n):#定义一个函数,它有一个参数,叫做n
    if (n == 0):#如果这个参数:n等于0,那么
        return 1#返回1
    else:#否则
        #下面再次调用了本函数
        return (n * function1(n - 1))#返回参数n×(function1(n-1)的返回值)

点赞0


评论

你是没见过无视递归深度的引用回环……

???

2个函数,一个引用another,another引用之前的那个,无限回环

有几率喵过递归深度,可能崩溃

哈哈哈哈哈是的……

你看我的图片


wrmdcxywrmdcxy

如果这样编写:

print(function1(0))

=>1

如果这样编写:

print(function1(3))

=>

分解之后,程序是这样执行的:

1.(n*function1(n-1))
   ↓            ↓
   3            2

2.(n*function1(n-1))
   ↓            ↓
   2            1

3.(n*function1(n-1))
   ↓            ↓
   1            0
4.function1(0)

然后,反过来:

1.function(0)=1
2.n(1)*1=1
3.n(2)*1=2
4.n(3)*2=6
5.return 6

所以,

=>6

如果这样编写:

print(function1(-1))#这里是负数,程序将无休止地执行下去

由于这里是负数,它(函数)会一直去执行,所以:

=>RecursionError: maximum recursion depth exceeded while calling a Python object

什么意思呢?就是说程序已经很累了,执行不了了,就像10÷3一样

专业点,就是程序已经达到了Python的最大递归深度。

 

 

就是这样的啦,已经很详细咯~

点赞0


评论


SXD_今夕何夕SXD_今夕何夕

c++

点赞0


评论

????这是C++????C++表示代码块怎么只用缩进呢


TimeLinkForeverTimeLinkForever

center_image

点赞0


评论

呼呼呼呼哈哈哈哈哈

这个可以添加到昨天我们炒了一波的帖子那里

哈哈哈

我估计bcm有%20的人不知道函数可以当参数输入

我们知道……(呵呵呵)

哈哈哈

哈哈哈哈哈哈哈哈哈哈哈……

还有三重函数回环

哦对!

如果我们愿意,100重也可以