【Java初阶练习题】-- 循环+递归练习题

循环练习题02

  • 打印X图形
  • 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
  • 输出一个整数的每一位如:123的每一位是3,2,1
  • 模拟登录
  • 使用方法求最大值
  • 求斐波那契数列的第n项。(迭代实现)
  • 求和的重载
  • 求最大值方法的重载
  • 递归求N阶乘
  • 递归求 1 + 2 + 3 + ... + 10
  • 递归打印数字的每一位
  • 写一个递归方法,输入一个非负整数,返回组成它的数字之和
  • 递归求斐波那契数列的第 N 项
  • 汉罗塔

打印X图形

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while(sc.hasNextInt()) {
            int n = sc.nextInt();
            for(int i = 0 ; i < n ; i++) {
                for(int j = 0 ; j < n ; j++) {
                    if(i == j || i + j == n-1) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}

在这里插入图片描述

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

    public static void main(String[] args) {
        double sum = 0;
        int tmp = 1;
        for (int i = 1; i <= 100; i++) {
            sum += 1.0/i * tmp;
            tmp = - tmp;
        }
        System.out.println(sum);
    }

在这里插入图片描述

输出一个整数的每一位如:123的每一位是3,2,1

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        while(num != 0) {
            System.out.print(num%10+" ");
            num /= 10;
        }
    }

在这里插入图片描述

模拟登录

要求:// 编写代码模拟三次密码输入的场景。 最多能输入三次密码,
// 密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
Java中比较字符是.equals

    public static void main(String[] args) {
        int count = 3;
        Scanner scanner = new Scanner(System.in);
        while (count != 0) {
            System.out.println("请输入你的密码:");
            String passWord = scanner.nextLine();
            if (passWord.equals( "123456")) {
                System.out.println("登录成功");
                return;
            }else {
                count--;
                System.out.println("你还有 "+count+"次机会");
            }
        }
        System.out.println("密码错误");
    }

在这里插入图片描述

使用方法求最大值

要求:创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3

    public static void main(String[] args) {
        int a = 2;
        int b = 4;
        int c = 9;
        System.out.println(max2(a, b));
        System.out.println(max3(a, b, c));
    }
    public static int max2(int x,int y) {
        return x > y ? x : y;
    }
    public  static int max3(int i,int j,int k) {
        int ret = max2(i,j);
        return max2(ret,k);
    }

在这里插入图片描述

求斐波那契数列的第n项。(迭代实现)

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(fib(num));
    }
    public static int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        int f1 = 1;
        int f2 = 1;
        int f3 = 2;
        for (int i = 3; i <= n; i++) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }

在这里插入图片描述

求和的重载

要求:求两个整数的方法 和 三个小数之和

    public static void main(String[] args) {
        int x = 1;
        int y = 2;
        double d1 = 2.8;
        double d2 = 5.2;
        double d3 = 2.5;
        System.out.println(add(x,y));
        System.out.println(add(d1,d2,d3));
    }
    public static int add(int a,int b) {
        return a+b;
    }

    public static double add(double c,double d,double e) {
        return c+d+e;
    }

在这里插入图片描述

求最大值方法的重载

在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?

    public static void main(String[] args) {
        int n1 = 2;
        int n2 = 5;
        double d1 = 2.5;
        double d2 = 9.5;
        double d3 = 7.5;

        System.out.println(max(n1,n2));
        System.out.println(max(d1,d2,d3));
    }

    public static int max(int a,int b) {
        return Math.max(a, b);
    }
    public static double max(double n,double m, double l) {
        double d = Math.max(n,m);
        return Math.max(d,l);
    }

在这里插入图片描述

递归求N阶乘

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int ret = fac(N);
        System.out.println(ret);
    }
    public static int fac(int n) {
        if (n == 1) {
            return 1;
        }
        return n * fac(n-1);
    }

在这里插入图片描述

递归求 1 + 2 + 3 + … + 10

    public static void main(String[] args) {
        System.out.println(sum(10));
    }
    public static int sum(int n) {
        if (n == 1) {
            return 1;
        }
        return n + sum(n-1);
    }

在这里插入图片描述

递归打印数字的每一位

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        print(num);
    }
    public static void print(int n) {
        if (n < 10) {
            System.out.print(n);
            return;
        }
        print(n / 10);
        System.out.print(" " + (n % 10));
    }

在这里插入图片描述

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

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(sumEvery(num));
    }
    public static int sumEvery(int n) {
        if (n < 10) {
            return n;
        }
        return sumEvery(n / 10) + n % 10;
    }

在这里插入图片描述

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

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(fib1(num));
    }
    public static  int fib1(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return fib1(n-1) + fib1(n-2);
    }

在这里插入图片描述

汉罗塔

    public static void main(String[] args) {
        hanoi(3,'A','B','C');
    }
    public static void move(char pos1,char pos2) {
        System.out.print(pos1 + "-> " + pos2 + " ");
    }
    public static void hanoi(int n,char pos1,char pos2,char pos3) {
        if (n == 1) {
            move(pos1,pos3);
            return;
        }
        hanoi(n-1,pos1,pos3,pos2);
        move(pos1,pos3);
        hanoi(n-1,pos2,pos1,pos3);
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/114170.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++之初始化列表详细剖析

一、初始化列表定义 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(mont…

华纳云:centos系统中怎么查看cpu信息?

在CentOS系统中&#xff0c;我们可以使用一些命令来查看CPU的详细信息。下面介绍几个常用的命令&#xff1a; 1. lscpu lscpu命令可以显示CPU的架构、型号、核心数、线程数、频率等信息。 # lscpu 执行以上命令后&#xff0c;会输出类似以下内容&#xff1a; 2. cat /proc/…

3D医学三维技术影像PACS系统源码

一、系统概述 3D医学影像PACS系统&#xff0c;它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成&#xff0c; 具有完善的影像数据库管理功能&#xff0c;强大…

Oil Crop Science:DAP-seq技术揭示花生中AhTWRKY24和AhTWRKY106转录因子下游调控基因

2023年6月4日&#xff0c;青岛农业大学草业学院宋辉教授课题组的研究成果&#xff0c;发表在Oil Crop Science期刊上&#xff0c;文章题目为Identification of the target genes of AhTWRKY24 and AhTWRKY106 transcription factors reveals their regulatory network in Arach…

【好书推荐】AI时代架构师修炼之道:ChatGPT让架构师插上翅膀

目录 前言 ChatGPT对架构师工作的帮助 快速理解和分析需求 提供代码建议和解决方案 辅助系统设计和优化 提高团队协作效率 如何使用ChatGPT提高架构师工作效率 了解用户需求和分析问题 编码实践和问题解决 系统设计和优化建议 团队协作和沟通效率提升 知识管理和文…

K8s集群

统一时间&#xff1a;ntpdate(都做) ntpdate -b ntp1.aliyun.com */1 * * * * /usr/sbin/ntpdate -b ntp1.aliyun.com systemctl status docker vi /etc/docker/daemon.json systemctl restart docker m: vim kubernetes.sh cat >> /etc/yum.repos.d/kubernetes.repo…

Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问

Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问 文章目录 Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3…

C++动态内存检查工具 - AddressSanitizer

参考 https://www.qt.io/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt https://doc.qt.io/qt-6/qmake-variable-reference.html#qmake-lflags AddressSanitizer是gcc编译器套件的一部分(gcc版本 > 4.8)&#xff0c;只要在编译器调用中添加-fsanitizeaddre…

AtCoder abc143

D - Triangles 排序后two pointer # -*- coding: utf-8 -*- # time : 2023/6/2 13:30 # author : yhdutongwoo.cn # desc : # file : atcoder.py # software : PyCharmimport bisect import copy import sys from sortedcontainers import SortedList from coll…

Android开发知识学习——从Retrofit原理来看HTTP

文章目录 Retrofit 使用方法简介Retrofit 源码结构总结扔物线读源码的思路与方式 Retrofit 使用方法简介 导包 implementation com.squareup.retrofit2:retrofit:最新版本创建一个 interface 作为 Web Service 的请求集合&#xff0c;在里面用注解 &#xff08;Annotation&…

Spring Boot整合Swagger

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

新建Git仓库后!如何将本地项目直接推送上到git仓库中的详细教程!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Git新建仓库二、来到你的本地仓库 前言 我们在git新建仓库后&#xff0c;如何直接在本地的项目文件夹中直接推送到git仓库中呢&#xff01;那么下面是详细…

HTTP 协议请求头 If-Match、If-None-Match 和 ETag

概述 在 HTTP 协议中&#xff0c;请求头 If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Since、If-Range 主要是为了解决浏览器缓存数据而定义的请求头标准&#xff0c;按照协议规范正确的判断和使用这几个请求头&#xff0c;可以更精准的处理浏览器缓存&#x…

《Pytorch新手入门》第二节-动手搭建神经网络

《Pytorch新手入门》第二节-动手搭建神经网络 一、神经网络介绍二、使用torch.nn搭建神经网络2.1 定义网络2.2 torch.autograd.Variable2.3 损失函数与反向传播2.4 优化器torch.optim 三、实战-实现图像分类(CIFAR-10数据集)3.1 CIFAR-10数据集加载与预处理3.2 定义网络结构3.3…

QT+SQLite数据库配置和使用

一、简介 1.1 SQLite&#xff08;sql&#xff09;是一款开源轻量级的数据库软件&#xff0c;不需要server&#xff0c;可以集成在其他软件中&#xff0c;非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite&#xff08;Qt自带驱动&#xff09;。 二、下载和配置 2.1 SQLite下载…

Clion 下载、安装、使用教程,附详细图文(2023年亲测可用)

文章目录 一、下载Clion二、安装教程三、安装MinGW方法一、直接下载MinGW安装① 下载MinGW② 配置Clion 方法二、使用Dev cpp安装① 安装Dev cpp② 配置Clion 四、常用快捷键 大家好&#xff0c;今天为大家带来的是 Clion 的下载&#xff0c;安装&#xff0c;使用教程&#xff…

HTML样式CSS、图像

HTML样式-CSS: CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。CSS可以通过以下方式添加到HTML中&#xff1a;1&#xff09;、内联方式&#xff1a;在HTML元素中使用“style”属性&#xff1b;2&#xff09;、内部样式表&#xff1a;在HTML文档头部<head>区…

揭秘!AI加持双十一电商盛宴,带你解锁更多营销新玩法

从2009年到2023年&#xff0c;每年年终的双11大促都是如期而至&#xff0c;而且几乎每一次双11都能给电商行业带来创新和改变。今年是中国电商行业的第15个双11&#xff0c;也是人工智能&#xff08;AI&#xff09;在电商领域大规模应用的第一个双11。在这15年的发展历程中&…

【ArcGIS微课1000例】0077:ArcGIS生成经纬网(shp格式)

使用ArcGIS制图的时候,可以很方便的生成经纬网、方里网及参考格网,但是在需要shp格式的经纬网,进一步在南方cass中使用经纬网的时候,就需要单独生成了。 如下图所示为全球大陆矢量数据,我们基于该数据来生成全球指定间距的经纬网数据。 在ArcGIS中,生成经纬网和方里网均…

玩了一下 Jenkins,最新版本 + JDK11

背景 今年五月的时候玩了一下 Jenkins&#xff0c;最新版本 2.414.3 &#xff0c;JDK 11 。本机有两个 JDK&#xff0c;只放到 Tomcat 里面了&#xff0c;看到了一个启动页面&#xff0c;后面有其他事情就忘记了。最近又想起来&#xff0c;觉得还是应该玩一下这么有技术含量的…