首页 > 其他分享 >巨简单!弄懂递归的原理-带括号加法题而已

巨简单!弄懂递归的原理-带括号加法题而已

时间:2024-08-10 15:40:17浏览次数:15  
标签:return 递归 代码 digui 弄懂 括号 result 加法

递归的讲解一大堆,想要明白其中关键又不得其要,让人头疼。我想写一种让我自己让你能简单理解,直扼要命的方式理解“代码”与“方法”之间的联系

1.问题:斐波那契(求和运算)

求4之前的数的总和

2.解决问题的方法

斐波那契数列示例(数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以  递推  的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*))

简单理解 公式可写出,总和= (1+ ( 2+( 3+4)))

3.代码实现

3.1递归代码实现

1 def digui(n):
2     if n == 0:  # 基准情况(边界条件)
3         return 0
4     else:
5         return n + digui(n-1)  # 递归步骤,函数:递,return:归
6 print(digui(4))

         代码结果输出  :10

“递归”第5行代码这里你把它想成带括号的数学题,有括号先算括号内,直到没有括号,括号内的运算后的值在再与括号外的值运算,如图所示

若是用栈表示这段代码就是这个样子,如图所示

栈的存储顺序:

在每次递归调用的过程中,栈中的内容会是这样的:

1 |         |  <- 栈顶(Top of Stack)
2 |  digui(0)  |  <- 这个函数执行完毕并返回 0
3 |  digui(1)  |  <- 1 + digui(0)
4 |  digui(2)  |  <- 2 + digui(1)
5 |  digui(3)  |  <- 3 + digui(2)
6 |  digui(4)  |  <- 4 + digui(3)

 

 

3.2循环代码实现

1 def xunhuan(n):
2     result = 0
3     for i in range(1, n+1):  # 从 1 到 n 进行循环累加
4         result += i
5     return result
6 
7 print(xunhuan(4))

           代码结果输出  :10

标签:return,递归,代码,digui,弄懂,括号,result,加法
From: https://www.cnblogs.com/huahua-diqiu/p/18352352

相关文章

  • 加法交换律的证明
    自然数集前置芝士:皮亚诺公理。求证:\(\foralla,b\in\mathbb{N},\)都有\(a+b=b+a\)。(即代数结构\((\mathbb{N},+)\)为一个阿贝尔群。)证:先证明\(\foralla\in\mathbb{N}\),都有\(0+a=a+0\)。显然\(0+0=0+0\),若\(k\in\mathbb{N}\),有\(0+k=k+0\)成立,由于等式性质......
  • LeetCode 1111. 有效括号的嵌套深度
    1111.有效括号的嵌套深度有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。有......
  • 检查括号和方括号是否平衡
    我需要编写一个函数,给出带有括号和/或方括号的字符串,它能够评估它们是否以正确的顺序出现。例如,在此字符串'([b])(aa)'中,您可以看到每次打开括号或方括号时,它都会在正确的位置关闭。但是,像“[(a])”这样的字符串不会以正确的顺序关闭括号或方括号,因为它应该是“[(a)]”。该......
  • 有效的括号(简单)
    有效的括号给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s=“()”输出:true示例2:输入......
  • leetcode200. 岛屿数量C++题解,精美图例和流程图,一题带你弄懂图的dfs遍历算法
    leetcode200.岛屿数量给你一个由‘1’(陆地)和‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例1:输入:grid=[[“1”,“1”,“1”,......
  • 高精度加法、减法(含代码)
    高精度算法是一种用于处理大整数和浮点数的特殊算法。高精度算法的实现原理是将大整数或浮点数拆分成多个小数字,将这些小数字存储在数组中,然后按照特定的规则进行计算。在计算过程中,需要注意进位和舍入的问题。高精度算法最常见的就是:加法、减法、乘法和除法。其中除了除法是......
  • 全面弄懂少儿编程与信息学奥赛-V1.0版
    全面弄懂少儿编程与信息学奥赛-V1.0版本次讲述话题都为作者自己学编程以及所在专业,行业,以及教学经验和实践来原创撰写,不保证100%正确,但是保证99%的相对正确,同样,我希望任何人去看待任何问题都理性思考,独立思考,自己去评判别人说的是否有道理,这个世界上任何事都没有绝对的对与错,但......
  • leetcode20.有效的括号、华为OD机试-(C卷,100分)- 表达式括号匹配
    leetcode20.有效的括号题目描述给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s=“()......
  • 高精度加法、减法、乘法、除法(C++)
    1、引入在进行大整数运算中,因为在C++/C中整数,最大也就是unsignedlonglong也就才(1e19+8e18)位,如果要几百位的相加减就不行了,所以就要用高精度了,这里只在C++/C上使用有价值,在例如python、Java语言上无需写此算法,python可以无限大,Java里有相关库可以引入。2、入门的思路即为......
  • NC 括号生成
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。......