首页 > 其他分享 >9.26递归函数

9.26递归函数

时间:2024-09-26 12:55:32浏览次数:8  
标签:9.26 递归函数 Int else def println Unit 定义

递归函数的定义和格式

递归是一种常用的解决问题的方法,特别适用于解决可以被分解为类似子问题

//递归函数:在函数内部再次调用自己
//解决可以被分解为类似子问题的问题
//组成:
//1.基本情况 最小问题的答案
//2.递归情况 调用自己去解决子问题
object TestFucRecursive {
//  def fn(): Unit = {
//    println("fn...")
//    fn()
//  }
//定义一个函数,求1-n的和
//  def sum(n:Int):Int = {
//  var s = 0
//  for(i <- 1 to n){
//    s += i
//  }
//  s
//}
  //定义一个递归函数,求1-n的和
  def sum(n:Int):Int = {
  println(n)
  //1.基本情况:最小问题,直接给答案,阻止死循环
  if (n == 1){
    1
  }else{
    //2.递归情况:再次调用自己去解决子问题
    return n + sum(n-1)
  }
}

  def main(args: Array[String]): Unit = {
    var s = sum(10)
    println(s)
  }
}

  //定义一个递归函数,求1-n的和
//  def sum(n:Int):Int = {
//  println(n)
//  //1.基本情况:最小问题,直接给答案,阻止死循环
//  if (n == 1){
//    1
//  }else{
//    //2.递归情况:再次调用自己去解决子问题
//    return n + sum(n-1)
//  }
//}

//  def main(args: Array[String]): Unit = {
//    var s = sum(10)
//    println(s)
//  }
  //定义一个函数,求1*2*3*4*...*n
  def mul(n:Int):Int = {
    if (n == 0){
      1
    }else{
      mul(n-1) * n
    }
  }

  def main(args: Array[String]): Unit = {
    var s = mul(5) //5*4*3*2*1 = 120
    println(s)
  }
}

斐波那契数列

斐波那契数列的定义是:

基本情况:f(0) = 0,f(1) = 1

递归情况:f(n) = f(n-1) + f(n-2) (当n>= 2)。求它的第n项。

  //定义一个函数,计算斐波那契数列的第n项
  //斐波那契数列:1 1 2 3 5 8 13 21 ...
  //规律:
  //1.基本情况:f(0) = 0,f(1) = 1
  //2.递归情况:f(n) = f(n-1) + f(n-2)
  def feb(n:Int):Int ={
    //1.基本情况
    if (n == 0)
      0
    else if (n == 1)
      1
      else
      feb(n-1) + feb(n-2)
  }

  //定义一个函数,打印多位数字的各个位数上的数字 - 拆数
  def f(n: Int): Unit ={//n = 1234 ---->1 2 3 4
    //1.基本情况 假设数字只有1位,直接输出
    if (n < 10){
      print(n)
    }else{
      //(1)输出除了尾数之外的数字
      f(n/10)
      //(2)输出尾数
      println(n%10)
    }
  }

  def main(args: Array[String]): Unit = {
    f(45)
  }
}

 

标签:9.26,递归函数,Int,else,def,println,Unit,定义
From: https://blog.csdn.net/2402_87076449/article/details/142549385

相关文章

  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4957软件选装纯净特别版9.26
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4957.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.49......
  • 用递归函数实现汉诺塔游戏
    1.是什么        汉诺塔(HanoiTower)是一个经典的递归问题,描述了将一个由三根柱子组成的塔上的n个大小不一的圆盘从一个柱子移动到另一个柱子上的过程。每次移动只能移动一个圆盘,并且大圆盘不能放在小圆盘上面。思路分析:        当圆盘总数是5时,要将最底层......
  • C语言入门:回调函数与递归函数详解
    对于刚刚接触C语言的同学来说,回调函数和递归函数可能听起来有些复杂,但它们是编程中非常有用的工具。在这篇文章中,我将接着上一篇文章详细介绍这两个概念,并通过简单易懂的例子,让你轻松理解它们的作用和使用场景。废话不多说,我们开始吧~1.什么是回调函数?回调函数的概念回......
  • S-Clustr(影子集群) Simple SCC伪代码编译器,工业控制DSL结构语言,递归函数调用
    项目地址:https://github.com/MartinxMax/S-Clustr/releases200S-ClustrSimpleDSL语法内置函数示例RUN(启动设备)RUN:<ID>STOP(停止设备)STOP:<ID>TIME(MS延时)TIME:<Delay/Ms>函数示例DEF(定义函数名,空形参)DEFFunction:DEF(函数名,带形参)DEFFunction:var,......
  • Shell函数:递归函数、阶乘和函数库
    文章目录递归函数示例1:阶乘计算示例2:递归列出目录函数库递归函数递归是指函数在其内部调用自身。递归函数常用于解决像阶乘、斐波那契数列等问题。示例1:阶乘计算阶乘(Factorial)是数学中的一种运算,表示从1乘以2乘以3…直到某个数n的乘积,记作n!。例如:4!=1×2×......
  • 回溯函数(算法)杂谈 -----可主动控制撤回逻辑处理的递归函数
    概述回溯,对接触了算法的人而言,并不陌生,其实严谨地说回溯函数就是递归函数,只不过在使用上,人们将它的一些细节抽离出来,进而演化出了所谓的回溯,在算法导论中,与其相关的被称为“回溯搜索算法”。回溯本质是递归的副产物,只要有递归调用就会有回溯。回溯法也经常和二叉树或N叉树......
  • 趣味Python游戏编程:第3章 递归函数的威力:扫雷
    趣味Python游戏编程:第3章递归函数的威力:扫雷在第2章中,我们制作了一个拼图游戏,玩家通过鼠标操作图片块移动。本章设计一款扫雷游戏,玩法是在一个方块阵列中随机埋设一定数量的地雷,然后由玩家逐个打开方块,并以排除所有地雷为最终游戏目标。如果玩家打开的方块中有地雷,则游戏......
  • C语言day11(string函数族、递归函数、结构体、共用体、枚举)
    【1】string函数族1.strlen头文件:#include<string.h>格式:size_tstrlen(constchar*s);功能:计算字符串实际长度,不包括\0参数:s:目标字符串首地址返回值:字符串实际长度2.strcpy    头文件:#include<string.h>    格式:char*strcpy(char*dest,......
  • DRBD9.26 Anolis os 8.9安装配置
    1、安装DRBD9.26两种安装方式1、添加epel-release源安装;2、源码编译安装。参考centosDRBD安装方式,添加epel-release源的方式安装:1.1安装epel源yuminstallepel-releaseyuminstalldrbd-utils2、安装DRBD9.26后,重新编译内核添加对DRBD的内核支持安装完DRBD后systemctlst......
  • Python中15个递归函数经典案例解析
    1.阶乘计算阶乘是一个常见的递归应用,定义为n!=n*(n-1)*…*1。deffactorial(n):ifn==0:return1else:returnn*factorial(n-1)print(factorial(5))#输出:1202.斐波那契数列斐波那契数列的每一项都......