递归的练习

这篇具有很好参考价值的文章主要介绍了递归的练习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

思路

1.确定能否使用递归求解

2.推到出递推关系,即父问题与子问题的关系,以及递归的结束条件

深入到最里层的叫做递

从最里层出来的叫做归

在递的过程中,外层函数内的局部变量(以及方法参数)并未消失,归的时候还可以用到

阶乘

    public static void main(String[] args) {
        int i = f(5);
        System.out.println(i);
    }

    public static int f(int n) {
        if (n == 1) {
            return 1;
        }
        return n * f(n - 1);
    }
}

打印字符串

public static void p(int n,String str){
    if (n==str.length()){
        return;
    }
    p(n+1,str);
    System.out.println(str.charAt(n));
}

二分查找

public static int search(int[] arr, int target) {
    return f(arr, target, 0, arr.length - 1);
}

private static int f(int[] arr, int target, int i, int j) {
    if (i > j) {
        return -1;
    }
    int m = (i + j) / 2;
    if (target < arr[m]) {
        return f(arr, target, i, m - 1);
    } else if (target > arr[m]) {
        return f(arr, target, m + 1, j);
    } else {
        return m;
    }
}

冒泡排序文章来源地址https://www.toymoban.com/news/detail-465184.html

private static void bubble(int[] a, int j) {
    if (j == 0) {
        return;
    }
    int x=0;
    for (int i = 0; i < j; i++) {
        if (a[i] > a[i + 1]) {
            int t = a[i];
            a[i] = a[i + 1];
            a[i + 1] = t;
            x=i;
        }
    }
    bubble(a,x);
}

到了这里,关于递归的练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 递归求解汉诺塔问题(超详解)

    这个问题是关于三根柱子和一些圆盘的游戏。 初始时,所有的圆盘按照从大到小的顺序叠放在一根柱子上,目标是将所有圆盘从起始柱子移动到目标柱子上,在移动过程中,要满足以下规则喵: 每次只能移动一个圆盘。 大圆盘不能放在小圆盘上。 只能通过中间柱子作为辅

    2024年02月15日
    浏览(76)
  • C语言编程练习(经过确定分钟后,计算现在的时间)

    题目是在某大学教育平台上听的一道题,但是没有答案。自己琢磨的 题目大概意思:现在是11:20,经过110分钟,是几点几分? 首先贴上老师的解题思路:   解题思路:首先将目前时间 11:20分为两个部分,如何分开两部分? 1. 1120/100=11(c语言两个整数相除 结果是整数);1120%100

    2023年04月24日
    浏览(53)
  • 小薛读论文04:嵌入加速策略的逐步对冲( Progressive Hedging)算法求解带需求不确定性的集成规划和调度问题

    目录 1 摘要 2 背景概述 2.1 问题背景 2.2 方法概述 2.2.1 逐步对冲算法

    2024年02月12日
    浏览(40)
  • 算法 数据结构 递归插入排序 java插入排序 递归求解插入排序算法 如何用递归写插入排序 插入排序动图 插入排序优化 数据结构(十)

    1. 插入排序(insertion-sort):                                           是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入     算法稳定性:                  

    2024年02月09日
    浏览(53)
  • 递归思路讲解

    最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不知道遍历的路线是怎么样的,也对于返回的路线有点懵懂。 虽然

    2024年02月02日
    浏览(29)
  • 写递归题目的思路

    第一个问题,什么时候对数据进行操作? 我们递归的过程中是一定要对数据结构进行处理的,包括两个时间段,递归时处理数据,和回溯时处理数据。它们的区别就是一个写在递归函数调用处上面,一个写在调用处下面,此时需要注意,如果直接return 递归函数,也是属于递

    2024年02月07日
    浏览(43)
  • 回溯递归(例题+思路+代码)

    leetcode 77 组合问题适合用回溯求解。 经典解法:for循环 + 内部回溯。 每次进入回溯方法时,先判断终止条件,再进行当前层的循环,循环进行下一层递归。 由于递归本质其实就是暴力解法,所以会经过许多没有必要的节点。 该题中,如果n=4,k=3,那么在第二层中的3和4都是

    2023年04月19日
    浏览(84)
  • 递归竖栏菜单简单思路

    自己的项目要写一个竖栏菜单,所以记录一下思路吧,先粗糙的实现一把,有机会再把细节修饰一下 功能上就是无论这个菜单有多少层级,都能显示出来,另外,需要带图标,基于element-plus写成,当这个菜单栏点开的时候最好整个页面的高度不要有变化,最后整成了个小草稿

    2024年02月14日
    浏览(40)
  • 递归的练习

    思路 1.确定能否使用递归求解 2.推到出递推关系,即父问题与子问题的关系,以及递归的结束条件 深入到最里层的叫做递 从最里层出来的叫做归 在递的过程中,外层函数内的局部变量(以及方法参数)并未消失,归的时候还可以用到 阶乘 打印字符串 二分查找 冒泡排序

    2024年02月07日
    浏览(26)
  • 函数-函数递归及练习

    目录 1、什么是递归? 2、递归的两个必要条件 3、递归的练习  3.1 接受一个整型值(无符号),按照顺序打印它的每一位 3.2 编写函数不允许创建临时变量,求字符串的长度  3.3 求第n个斐波那契数 3.4 字符串逆序(递归实现)  总结 程序调用自身的编程技巧称为递归(

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包