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

重温简单递归

C++ 版本
#include <iostream>
#include <vector>
using namespace std;

// arr[l...r] 范围上的最大值
int f(const vector<int>& arr, int l, int r) {
    if (l == r) {
        return arr[l];
    }
    int m = (l + r) / 2;
    int lmax = f(arr, l, m);
    int rmax = f(arr, m + 1, r);
    return max(lmax, rmax);
}

int maxValue(const vector<int>& arr) {
    return f(arr, 0, arr.size() - 1);
}
int main() {
    vector<int> arr = {3, 8, 7, 6, 4, 5, 1, 2};
    cout << "数组最大值 : " << maxValue(arr) << endl;
    return 0;
}
C 版本
#include <stdio.h>

// 获取数组中 l 到 r 范围内的最大值
int f(int arr[], int l, int r) {
    if (l == r) {
        return arr[l];
    }
    int m = (l + r) / 2;
    int lmax = f(arr, l, m);
    int rmax = f(arr, m + 1, r);
    return (lmax > rmax)? lmax : rmax;
}

int maxValue(int arr[], int n) {
    return f(arr, 0, n - 1);
}
int main() {
    int arr[] = {3, 8, 7, 6, 4, 5, 1, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("数组最大值 : %d\n", maxValue(arr, n));
    return 0;
}

• C++ 版本:

◦ 使用 vector 来存储数组,这是 C++ 中常用的动态数组容器。

◦ f 函数递归地查找数组指定范围内的最大值,先判断范围只有一个元素时直接返回该元素,否则将范围分成两部分,分别递归查找左右子范围的最大值,最后返回两者中的较大值。

◦ maxValue 函数作为入口,调用 f 函数从整个数组范围开始查找最大值。

◦ 在 main 函数中创建 vector 并初始化,调用 maxValue 函数获取最大值并输出。

• C 版本:

◦ 直接使用普通数组,通过数组名和元素个数来操作。

◦ f 函数功能与 C++ 版本类似,通过递归查找指定范围最大值。

◦ maxValue 函数作为入口调用 f 函数查找整个数组最大值。

◦ 在 main 函数中定义数组,计算数组元素个数,调用 maxValue 函数获取最大值并通过 printf 输出。

 

http://www.xdnf.cn/news/8740.html

相关文章:

  • Es6中怎么使用class实现面向对象编程
  • Android学习之登录界面(包含忘记密码 记住密码)(java + 详细注释 + 源码)
  • 基于SpringBoot的校园电竞赛事系统
  • DARLR用于具有动态奖励的推荐系统的双智能体离线强化学习(论文大白话)
  • Java 的 synchronized
  • 【计算机网络】基于TCP进行socket编程——实现客户端到服务端远程命令行操作
  • Linux Kernel调试:强大的printk(二)
  • git子模块--命令--表格版
  • Spring MVC 的的核心原理与实践指南
  • 记录第一次正式收到SCI期刊论文的审稿
  • Github 2025-05-25 php开源项目日报 Top10
  • 进阶-自定义类型(结构体、位段、枚举、联合)
  • 在 Ubuntu linux系统中设置时区的方案
  • C++引用以及和指针的区别
  • PyTorch Image Models (timm) 技术指南
  • 【Linux】进程信号(一):信号的产生与信号的保存
  • 刷题记录(6)栈与队列相关操作
  • 独占内存访问工作原理
  • # 探索自然语言处理的奥秘:基于 Qwen 模型的文本分类与对话系统实现
  • 【HW系列】—web常规漏洞(SQL注入与XSS)
  • 算法笔记·数学·扩展欧几里得算法
  • 【MySQL】事务
  • 大学之大:浦项科技大学2025.5.25
  • 针对vue项目的webpack优化攻略
  • Kotlin IR编译器插件开发指南
  • 保留字、变量与常量
  • 数智管理学(十一)
  • 人工智能赋能教育:重塑学习生态,开启智慧未来
  • QListWidget的函数,信号介绍
  • 华为OD机试真题—— 矩阵中非1的数量 (2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现