zoukankan      html  css  js  c++  java
  • Golang-递归

    函数的递归调用

      基本介绍

        一个函数在函数体内又调用了本身,我们称为递归调

      递归调用快速入门

        

        上面代码的分析图:

        

        代码2

        

         对上面代码分析的示意图:

        

      递归调用的总结
        函数递归需要遵守的重要原则:

        1)执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)
        2)函数的局部变量是独立的,不会相互影响
        3)递归必须向退出递归的条件逼近,否则就是无限递归,死龟了:)
        4)当一个函数执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁,同时当函数执行完毕或者返回时,该函数本身也会被系统销毁

      递归课堂练习题

        题 1:斐波那契数
          请使用递归的方式,求出斐波那契数 1,1,2,3,5,8,13...
          给你一个整数 n,求出它的斐波那契数是多少?

          思路:
           1) 当 n == 1 || n ==2 , 返 回 1
           2) 当 n >= 2, 返回 前面两个数的和 f(n-1) + f(n-2)
          代码:

           

        题 2:求函数值
          已 知 f(1)=3; f(n) = 2*f(n-1)+1;
          请使用递归的思想编程,求出 f(n)的值?
          思路:

          直接使用给出的表达式即可完成代码:

          

         

        题 3:猴子吃桃子问题
        有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?
        思路分析:
          1)第 10 天只有一个桃子
          2)第 9 天有几个桃子 = (第 10 天桃子数量 + 1) * 2
          3)规律: 第 n 天的桃子数据 peach(n) = (peach(n+1) + 1) * 2
          代码:

           

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/Essaycode/p/12642148.html
Copyright © 2011-2022 走看看