首页 > 其他分享 >递归

递归

时间:2024-08-15 21:19:08浏览次数:11  
标签:fun1 递归 number 老和尚 和尚 有座

package com.shujia.day16.ketang;


/*
    递归:方法定义时方法内部调用自身的现象。

    区分:
        Math.max(Math.max(10,20),30)  方法的嵌套调用
        StringBuffer.append().append().append() 方法的链式调用

    讲故事:
        故事1:从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事,讲的故事内容是:
                从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事,讲的故事内容是:
                    从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事,讲的故事内容是:
                        从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事,讲的故事内容是:
                            ....
            什么时候不讲呢?比如:老和尚坐化了,山塌了。

        故事2:学习大数据,挣钱,取老婆,生娃
                学习大数据,挣钱,取老婆,生娃
                    学习大数据,挣钱,取老婆,生娃
                        学习大数据,挣钱,取老婆,生娃
                            ...
            取不到老婆....


    需求:求5的阶乘。 5! = 5*4*3*2*1

    递归的要求:要有出口,不然就是死递归了。
    public static int fun1(int number) {
        if (number == 1) {
            return 1;
        } else {
            return number * fun1(--number);
            //       5    * fun1(4)
            //       5    * 4 * fun1(3)
            //       5    * 4 * 3 * fun1(2)
            //       5    * 4 * 3 * 2 * fun1(1)
        }
    }

    注意:若递归使用不恰当,容易导致栈内存溢出。


 */
public class DiGuiDemo1 {
    public static void main(String[] args) {
        System.out.println(fun1(5));

    }

    public static int fun1(int number) {
        if (number == 1) {
            return 1;
        } else {
            return number * fun1(--number);
        }
    }
}

标签:fun1,递归,number,老和尚,和尚,有座
From: https://www.cnblogs.com/qiwei-bigdata/p/18361817

相关文章

  • 序列建模之循环和递归网络 - 双向RNN篇
    序言在序列建模的广阔领域中,循环神经网络(RNN\text{RNN}RNN)以其独特的循环结构,在处理序列数据方面展现出了强大的能力。然而,传统的单向......
  • 递归与回溯
    递归1.含义递归:函数(方法)直接或间接调用自身2.调用过程如果递归调用没有终止,将会一直消耗栈空间最终导致栈内存溢出(StackOverflow)所以必需要有一个明确的结束递归的条件也叫作边界条件、递归基 3.基本思想1.拆解把规模大的问题变成规模较小的......
  • vue 组件调用组件自身,递归调用组件自身
    父组件<template><divclass="page-box"><!--<child><templatev-slot:default="scope"><div>slot</div><div>{{scope.data1}}</div>......
  • 进阶 Java冒泡排序递归法 有点难度哦
    简介这里有用到递归的冒泡排序思路,难度对新手很大,不明白递归和冒泡排序的小伙子可以先看看我的其他两个文章。连接在这里:Java冒泡排序https://blog.csdn.net/ouhexie/article/details/140985984?spm=1001.2014.3001.5501Java递归算法https://blog.csdn.net/ouhexie/articl......
  • Java解决递归造成的堆栈溢出问题
    在Java中,递归造成的堆栈溢出问题通常是因为递归调用的深度过大,导致调用栈空间不足。解决这类问题的一种常见方法是使用非递归的方式重写算法,即使用迭代替代递归。1.方法一:非递归的方式重写算法(迭代替代递归)下面通过一个典型的递归例子——计算斐波那契数列的第n项,来演示如何用迭......
  • Java基础入门18:File、IO 流1(方法递归、字符集、IO流-字节流)
    File和IO流FileFile是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。IO流用于读写数据的(可以读写文件,或网络中的数据...)File代表文件IO流用来读写数据File创建对象创建File类的对象注意:File对象既可以代表文件、也可以代表文......
  • leetcode递归(LCR 141. 训练计划 III)
    前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。递归大部分题解可以使用迭代方式求解,使用递归是为了熟悉递归的解题思路。描述给定一个头节点为 head 的单链表用于记录一系列核心肌群训练编号,请将该系列训练编号 倒序 记录......
  • 递归下降语法分析
    递归下降本质递归下降使用递归推导方式来解析语法,其要求文法能够使用递归方法追个推导,最终达到文法匹配的目的。例如如下计算逻辑表达式的BNF文法: <expr>::=<term><expr_tail> <expr_tail>::='&'<term><expr_tail> |'|'<term><expr_t......
  • P1305 新二叉树【递归】
    新二叉树题目描述输入一串二叉树,输出其前序遍历。输入格式第一行为二叉树的节点数nnn。(1≤......
  • 巨简单!弄懂递归的原理-带括号加法题而已
    递归的讲解一大堆,想要明白其中关键又不得其要,让人头疼。我想写一种让我自己让你能简单理解,直扼要命的方式理解“代码”与“方法”之间的联系。1.问题:斐波那契(求和运算)求4之前的数的总和2.解决问题的方法斐波那契数列示例(数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数......