千家信息网

Java递归的概念是什么与如何使用

发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,这篇文章主要介绍"Java递归的概念是什么与如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java递归的概念是什么与如何使用"文章能帮助大家解决问题。
千家信息网最后更新 2025年01月29日Java递归的概念是什么与如何使用

这篇文章主要介绍"Java递归的概念是什么与如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java递归的概念是什么与如何使用"文章能帮助大家解决问题。

    一、递归的概念

    1.什么是递归?

    递归就是:方法自己调用方法的过程。

    使用递归有两个前提条件:

    1.有一个趋近与终止的条件。

    2.自己调用自己 。

    如何实现递归?

    最重要的方式是:实现递归,需要去推导出一个递推公式。

    思考递归的方式:横向思考,根据递推公式来思考。

    代码的执行:是纵向执行。

    2.递归讲解

    首先看下面代码:

    public class TestDemo {    public static void func(){                func();   //自己调用自己本身    }      public static void main(String[] args) {        func();     }}

    上图代码就是一个简单的递归。

    我们再来看一下这个代码的运行结果,

    画图讲解:

    对于上图这个递归来说,根本没有一个趋于终止的条件,所以这个函数会无休止的递归下去。每次递归都要在栈上开辟内存,一直在栈上开辟内存,总有一次会栈超出。

    老铁们要记住:一旦你写的递归有问题,如果是边界没找对一定会报一个

    ,如果报了这个错误那么一定是你的终止条件有错误,或者是没写终止条件导致了你在递归的过程当中深度过大,最终栈溢出。

    如果想要让上述代码正确,我们需要给它加入一个终止条件。

    正确代码如下:

    public class TestDemo {    public static void func(int n){        if(n == 1) return;        func(n -1);    }      public static void main(String[] args) {        func(3);     }}

    下面会通过简单的例题让大家更加深入的了解递归

    二、递归的使用

    例题:递归方式求n的阶乘 画图分析:

    实现代码 :

    public class TestDemo {    public static int fac(int n){        if(n == 1) {            return 1;        }        int tmp = n * fac(n - 1);        return tmp;    }    public static void main(String[] args) {        System.out.println(fac(5));     }}

    代码画图讲解:

    例题:求n的和

    画图分析:

    实现代码:

    第一种写法:public class TestDemo {    public static int sumAdd(int n){        if(n == 1) {            return 1;        }        int tmp = n + sumAdd(n - 1);        return tmp;    }    public static void main(String[] args) {        System.out.println(sumAdd(3));     }} 第二种写法:public class TestDemo {    public static int sumAdd(int n){        if(n == 1) {            return 1;        }               return n + sumAdd(n -1);    }    public static void main(String[] args) {        System.out.println(sumAdd(3));     }}

    例题:递归实现按照顺序打印每一位的数字

    画图分析:

    实现代码:

    public class TestDemo {     public static void print(int n){        if(n < 10){            System.out.print(n+" ");        }else{            print(n/10);            System.out.print(n+" ");        }    }    public static void main(String[] args) {        print(1234);      }}

    例题:写一个递归方法,输入一个非负整数,返回组成它的数字之和。例如:输入1729,则应该返回1+7+2+9

    实现代码:

    public class TestDemo {      public static int sumEveryone(int n){        if(n < 10){           return n;        }else{            return n + sumEveryone(n/10);        }    }     public static void main(String[] args) {        System.out.println(sumEveryone(7910));     } }

    例题:求第n个斐波那契数是几

    画图分析:

    实现代码:

    第一种方法:递归public class TestDemo {    public static int fib(int n){        if(n == 1 || n == 2){            return 1;        }else{            return fib(n-2)+fib(n-1);        }    }    public static void main(String[] args) {        System.out.println(fib(5));     }   第二种方法:叫做循环(迭代)实现    public static int fib2(int n){        if(n == 1 || n==2){            return 1;        }            int f1 = 1;            int f2 = 1;            int f3 = 0;            for (int i = 3; i < n; i++) {                f3 = f1+f2;                f1 = f2;                f2 = f3;            }            return f3;     }    public static void main(String[] args) {        System.out.println(fib2(45));     }

    关于"Java递归的概念是什么与如何使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

    递归 代码 例题 方法 条件 概念 分析 方式 知识 过程 上图 公式 内存 写法 就是 数字 行业 错误 问题 输入 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发工具 陈 品茗bim建模软件服务器地址 软件开发合同终止协议模板 网络安全中心运营管理制度 计算机软件开发条例 河南州亚网络技术公司 电子软件开发相关公司 微信小程序用阿里云什么服务器好 查找表中不重复数据库 商战小说软件开发 网络安全对我们带来的影响 武汉恰播互联网科技 网络安全学院成绩 网信办网络安全自查报告模板 明日之后怎么把服务器设置在外 深圳P2P软件开发 软件开发项目会议议程模板 我的世界java 版怎么自己开服务器 电脑物流软件开发一般要多少钱 计算机网络技术系统说明书 青少年网络安全日活动总结 下载软件开发者被判刑 网络安全一年收入多少 计算机网络技术要学英语吗 网络安全管理本科高校 智能视频分析服务器价格 电子政务的数据库 汉德 软件开发公司 迈特怀恩服务器有大老板 一个数据库的对象有几个
    0