• 函数递归及面向过程编程


    函数递归及面向过程编程

    一、函数递归

    1.1什么是递归

    递归就是函数调用函数本身,然后有结束条件。

    一般解决无法求解但不断靠近的值,比如利用二分法找具体的数字,汉诺塔等

    让我们举个栗子,比如要实现0-99的和,用while循环为:

    num = 0
    count = 0
    while count<100:
        print(count)
        count += 1
        num +=count
    print(num)
    

    接下来我们用递归函数对他进行一个实现

    count = 0
    def f1():
        global count        #下面的count是全局的count
        if count >100:
            return
        count += 1
        print(count)
        f1()
    f1()
    

    以上就是一个递归函数,他其实在不断调用自身,同时他又一个结束条件就是当count<100的时候,调用就结束,输出count。

    递归更多地是一种思想,他是用来解决某种问题

    1.2 为什么要用递归

    把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。

    1.3 总结

    1、递归一定要有一个明确的结束条件
    2、每进入下一次递归,问题的规模都应该减少
    3、递归效率不高,递归层次过多会变成死循环,导致栈溢出

    二、面向过程编程

    2.1 什么是面向过程编程

    面向对称编程其实是一种机械式的思维方式。就是先干什么、后干什么、再干什么。

    2.2 面向过程编程的优缺点

    优点

    ​ 复杂的问题流程化,简单化

    缺点

    1. 上一个过程完蛋了,下一个过程也完蛋
    2. 功能与功能之间不独立
    3. 牵一发而动全身,不方便修改/扩展功能,可扩展性差
  • 相关阅读:
    字典树入门
    Cyclic Nacklace HDU 3746 KMP 循环节
    KMP字符串匹配 模板 洛谷 P3375
    Phone List POJ-3630 字典树 or 暴力
    stringstream istringstream ostringstream 三者的区别
    单词数 HDU 2072 字符串输入控制
    逆序单词 HIhoCoder 1366 字典树
    input框中修改placeholder的样式
    如何使用$.each()与$().each()以及他们的区别
    css解决input的阴影
  • 原文地址:https://www.cnblogs.com/yanjiayi098-001/p/11352727.html
Copyright © 2020-2023  润新知