欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java算法(四)

时间:2023-08-04

这期文章继续给大家介绍Java简单的算法!

一、阶乘的相关的算法 (一)求任意一个数的阶乘

在这里我能想到的方法有两种:for循环和递归;

1、for循环

代码如下:

public class Demo08 { public static void main(String[] args) { int sum=1; Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int a=sc.nextInt(); for(int i=1;i<=a;i++){ sum=sum*i; } System.out.println(a+"!="+sum); }}

输出结果:

2、递归

在这里我们要知道:n!=n*(n-1)!
有了这个公式,我们就可以利用递归实现阶乘:
代码如下:

import java.util.Scanner;public class Demo09 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int n=sc.nextInt(); System.out.println(n+"!="+Recursion(n)); } public static int Recursion(int a){ if(a==0){ return 1; } else{ return a*Recursion(a-1); } }}

运行结果:

(二)求1的阶乘到任意一个数的阶乘和

在这里 我就以for循环为例:
代码如下:

import java.util.Scanner;public class Demo10 { public static void main(String[] args) { int n=1,sum=0; Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int a=sc.nextInt(); for(int i=1;i<=a;i++){ n=n*i; sum=sum+n; } System.out.println("1~"+a+"的阶乘和是:"+sum); }}

运行结果:

(三)编程练习

任意给定一个三位数,试编程求解其各位数对应的阶乘之和。
(如给定一个自然数 123 ,求 1! +2!+3!)
解:应明确,先分离各个位数,在分别求阶乘,最后求和!

代码如下 :

import java.util.Scanner;public class Demo11 { public static void main(String[] args) { int b1,b2,b3; int sum=0; Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int b=sc.nextInt(); if(b<1000&&b>99){ b1=b/100; b2=b/10%10; b3=b%10; sum=Recursion(b1)+Recursion(b2)+Recursion(b3); System.out.println(b+"的各个位数的阶乘和是:"+sum); } else{ System.out.println("输入的数不是一个三位数!!!"); } } public static int Recursion(int a){ if(a==0){ return 1; } else{ return a*Recursion(a-1); } }}

运行结果:

二、百钱百鸡问题

”百钱百鸡问题”:已知公鸡每只 3 元,母鸡每只 5 元;每 3 只小鸡 1 元,现需用 100 元买 100 只鸡,问每种鸡应各买多少只。
解:这里我们知道,母鸡最多买20只,公鸡最多买33只(小数部分舍掉)
如果公鸡母鸡的数量确定了,小鸡的数量自然也就确定了,所以,我们秩序嵌套两重循环即可。

代码如下:

//百钱百鸡public class Demo02 { public static void main(String[] args) { for(int i=0;i<=20;i++){ for(int j=0;j<=33;j++){ int k=100-i-j; if((5*i)+(3*j)+(k/3)==100&&k%3==0){ System.out.println("应买"+i+"只母鸡;"+j+"只公鸡;"+k+"只小鸡"); } } } }}

运行结果:

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。