码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 码农人,码农魂,码农都是人上人【Java】值得收藏的【方法递归】经典题目 (1)


    目录

    1.递归求n的阶乘

    2.递归求和

    3.递归打印一个整数的每一位

    4.递归实现计算一个非负整数的每一位之和

    5.递归求斐波那契数列的第 N 项


    1.递归求n的阶乘

    题目描述:递归求n的阶乘

    难度:⭐

    解题思路:

    1. 1的阶乘就是1
    2. 大于1的情况,num每次减1来逼近1,然后返回阶乘值
    1. public static int fac(int num) {
    2. if (num == 1) {//1的阶乘就是1 - 直接返回1就可以
    3. return 1;
    4. } else {
    5. //大于1的情况
    6. int recur = num * fac(num - 1);
    7. return recur;
    8. }
    9. }
    10. public static void main(String[] args) {
    11. int num = 3;
    12. int ret = fac(num);
    13. System.out.println(ret);
    14. }

    代码结果:

    2.递归求和

    题目描述:递归求 1 + 2 + 3 + ... + 10

    难度:⭐

    解题思路:

    1. 如果值是1,那1本身就是和
    2. 不是的情况,每次减少一个数,拿减少前的加上减少后的
    1. public static int func(int n) {
    2. if (n == 1) {
    3. return 1;
    4. }else {
    5. return n + func(n - 1);
    6. }
    7. }
    8. public static void main(String[] args) {
    9. int num = 10;
    10. int ret = func(num);
    11. System.out.println(ret);
    12. }

    代码结果:

    3.递归打印一个整数的每一位

    题目描述:按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) 

     难度:⭐⭐

    解题思路:

    1. 如果是两位数或以上,先分离成一位数再一个一个打印
    2. 如果不是就直接求余数打印
    1. public static void add(int n) {
    2. if (n > 9) {
    3. add(n / 10);
    4. }
    5. System.out.println(n % 10);
    6. }
    7. public static void main(String[] args) {
    8. int n = 123;
    9. add(n);
    10. }

    代码结果:

    4.递归实现计算一个非负整数的每一位之和

    题目描述:写一个递归方法,输入一个非负整数,返回组成它的数字之和

    难度:⭐⭐

    解题思路:

    1. 如果数值小于9,直接返回数值就可以了
    2. 大于的情况,利用 模10 和 除10 来分离出每一位
    1. public static int sum(int num) {
    2. if (num <= 9) {
    3. return num;
    4. }else {
    5. return num % 10 + sum(num / 10);
    6. }
    7. }
    8. public static void main(String[] args) {
    9. int n = 123;
    10. int ret = sum(n);
    11. System.out.println(ret);
    12. }

    代码结果:

    5.递归求斐波那契数列的第 N 项

    题目描述:斐波那契数列的前两项之和等于第三项。例如:前三个斐波那契数是1 1 2。

    难度:⭐⭐⭐

    解题思路:

    1. 如果是求第一项或者是第二项那就直接返回1,因为前两项都是1
    2. 大于两项的情况,传过来的数值减去2表示前一项的前一项,而减1就是前一项
    1. public static int fib(int n) {
    2. if (n == 1 || n == 2) {
    3. return 1;
    4. }
    5. return fib(n - 1) + fib(n - 2);
    6. }
    7. public static void main6(String[] args) {
    8. System.out.println(fib(1));
    9. System.out.println(fib(2));
    10. System.out.println(fib(3));
    11. System.out.println(fib(4));
    12. System.out.println(fib(5));
    13. System.out.println(fib(6));
    14. }

    代码结果:

  • 相关阅读:
    Java中的流Stream和读取器Reader及其之间的关系
    华为通过FTP 进行文件操作示例
    深入理解ES6模块化:语法、特性与最佳实践
    初出茅庐的小李博客之根据编译时间生成软件版本号
    mysql explain详解
    CDH启用kerberos 高可用运维实战
    35+程序员该怎么办?有哪些破局方法?
    ASP.Net MVC 登录页面实现RSA非对称加密
    深度学习神经网络实战:多层感知机,手写数字识别
    【免费赠送源码】Springboot喵喵宠物医院管理系统ti5f6计算机毕业设计-课程设计-期末作业-毕设程序代做
  • 原文地址:https://blog.csdn.net/m0_63033419/article/details/126112388
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号