函数的递归结构

递归最显著的特征为函数会在函数内部继续调用自己。

递归的效率不高,因为每层递归在等待值时会开辟内存,容易造成内存溢出。

递归结构的两个要求:
1.递归必须有终止条件。
2.每进入一层递归,问题的规模要比上一层少。

所有用递归解决的问题,for循环都可以解决。
几个例子

def test(n):
    print("这层开始时n=%.d" % n)
    n = int(n / 2)
    if n == 0:
        return "结束"
    res = test(n)
    return res


A = test(10)
print(A)
person_list = ["LL", "YY", "Lucky", "BB", "MB"]


def askrode(person_list):
    person = person_list.pop(0)
    if len(person_list) == 0:
        if person == "MB":
            return "我知道地方,在太原"
        else:
            return "没人知道路"
    print("%s说我去给你问问%s" % (person, person_list))
    res = askrode(person_list)
    return res


result = askrode(person_list)
print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 函数嵌套调用和函数递归是两种不同的编程技巧。 函数嵌套调用指的是一个函数在内部调用另一个函数。这种方式常常用于将复杂的任务分解成若干个较简单的子任务。这种方式的优点是代码可读性和可维护性较好,缺点是不容易解决递归类型的问题。 函数递归则是一种函数自己调用自己的方法。递归的实现需要确定递归的终止条件,以避免函数无限递归。递归常常用于解决数学归纳类型的问题,例如斐波那契数列求值、求解树形结构等。这种方式的优点是可以解决一些复杂的问题,缺点是代码实现难度较大,对于循环深度过大的递归调用可能会导致程序崩溃。 ### 回答2: 函数的嵌套调用和函数递归是编程中常用的两种方法,它们的主要区别在于函数的调用方式和逻辑控制。 首先,函数的嵌套调用是指在一个函数的定义中调用其他函数。当一个函数内部调用另一个函数时,程序会先执行被调用的函数,然后回到原函数继续执行。这种调用方式可以在编写复杂的程序时提高代码的可读性和模块化程度,因为每个函数完成一个特定的功能。 其次,函数递归是指一个函数在其函数体内直接或间接调用自身。递归函数通过将问题划分为规模更小的子问题并在子问题上调用自身来解决问题。递归函数需要一个终止条件,当满足终止条件时,递归函数会不断返回结果,从而逐步解决原始问题。递归函数在解决特定问题时往往比较简洁和直观。 函数的嵌套调用和函数递归的主要区别在于函数的调用方式和逻辑结构。嵌套调用是线性的,函数按照调用的顺序执行,每次调用都会返回到上一级函数。而函数递归是通过函数自身的调用来迭代解决问题,它的执行过程是直接或间接调用自身,直到满足终止条件。 根据实际情况,我们可以选择使用函数的嵌套调用或函数递归来解决问题。函数的嵌套调用适用于有明确调用顺序的场景,而函数递归适用于需要通过递归调用解决的问题。同时,递归函数使用不当可能导致栈溢出等错误,需要谨慎使用和设置终止条件。 ### 回答3: 函数的嵌套调用是指在一个函数内部调用另一个函数。在嵌套调用中,当函数A中调用函数B时,函数B执行完毕后会返回到函数A中继续执行。这种调用方式可以让程序具有更高的灵活性和模块化,可以使得程序的结构更加清晰。 而函数的递归是指在一个函数内部调用自身。在递归调用中,当函数执行到递归调用语句时,会暂时跳出当前函数,执行调用的函数,直到达到递归的终止条件后才开始逐层返回。递归调用可以解决一些需要重复执行相同或相似操作的问题,可以让程序更加简洁,但也容易导致性能问题和栈溢出等错误。 区别可以从以下几个方面来看: 1. 调用对象不同:嵌套调用是调用其他函数,而递归调用是调用自身。 2. 调用时机不同:嵌套调用可以在任何需要的时候进行调用,而递归调用需要满足递归的终止条件才会返回。 3. 执行方式不同:嵌套调用在函数调用完毕后会直接返回到调用位置继续执行后续代码,而递归调用在递归终止条件满足后才会开始逐层返回,并依次执行每一层递归调用之后的代码。 4. 难易程度不同:嵌套调用相对比较简单,适用于一些简单的函数调用场景;而递归调用相对较复杂,需要在编写代码时设计好递归终止条件和递归调用的逻辑,适用于解决一些重复性问题的场景。 综上所述,函数的嵌套调用和函数递归是两种不同的调用方式,各自适用于不同的场景,开发者可以根据实际需求选择合适的调用方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值