当前位置: 首页 > news >正文

【算法】算法设计与分析 课程笔记 第二章 递归与分治策略

2.1 递归

直接或间接地调用自身的算法称为递归算法。

用函数自身给出定义的函数称为递归函数。

2.1.1 阶乘

首先得想到一个求阶乘的函数:

这个函数的下面那个式子就用到了调用自身,所以可以用递归来实现,将主问题拆分成若干层的子问题,最底层的一定是当 n=0 时,阶乘的值,由此可以设计以下程序:

#include<bits/stdc++.h>
using namespace std;
int jiecheng(int n){if(n==0)return 1;//最底层必然返回1elsereturn n*jiecheng(n-1);//不是最底层,那就继续向下求阶乘
}
int main(){int n;cin>>n;cout<<jiecheng(n);return 0;
}

2.1.2 汉诺塔问题

三座塔上,所有圆盘从下到上按照由大到小的顺序拍好在A塔上,现在要求将所有圆盘原封不动地移到B盘上,并且大盘不能放在小盘上。

现在拆解问题,要把n个圆盘从A移到B,可以先把上面的 n-1 个移到C,再将剩下的那个移到B,最后将C上的 n-1 个移到B。

http://www.lryc.cn/news/175202.html

相关文章:

  • Java客户端_Apache Curator操作Zookeeper
  • 14:00面试,14:07就出来了,问的问题有点变态
  • 《你好,C语言》:从另一个视角学习并重新审视C语言的意义
  • 信创之国产浪潮电脑+统信UOS操作系统体验1:硬件及软件常规功能支持情况介绍
  • JAVA学习-全网最详细
  • 基于物联网的农村地区智能微电网系统(Simulink)
  • JavaScript系列从入门到精通系列第九篇:JavaScript中赋值运算符和关系运算符以及Unicode编码介绍
  • 租用独立服务器有哪些常见的误区?
  • 【学习笔记】POJ 3834 graph game
  • 无监督学习算法Kmeans
  • 区块链(4):区块链技术模型介绍
  • go语言 rune 类型
  • DS18B20温度传感器
  • LeetCode322. 零钱兑换
  • AUTOSAR扫盲贴--不是黑神话【基本概念和方法论】
  • python抠图(去水印)开源库lama-cleaner入门应用实践
  • Nginx可视化管理工具结合cpolar实现远程访问内网服务
  • CCC数字钥匙设计【BLE】 --建立安全测距
  • Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。
  • 常识判断 --- 党史
  • Rust 基础再理解
  • Opencv cuda版本在ubuntu22.04中安装办法,解决Could NOT find CUDNN的办法
  • 全网首发YOLOv8暴力涨点:Gold-YOLO,遥遥领先,超越所有YOLO | 华为诺亚NeurIPS23
  • BD就业复习第四天
  • 数据结构 | 树
  • Android11 适配
  • UML基础与应用之对象图
  • 英码科技精彩亮相火爆的IOTE 2023,多面赋能AIoT产业发展!
  • 400G QSFP-DD FR4 与 400G QSFP-DD FR8光模块:哪个更适合您的网络需求?
  • 【Android】Kotlin 中的 apply、let、with、also、run 到底有啥区别?