输入n的阶乘,求出阶乘,并输出值有几个零,输入:n 输出:n!中含有0的个数。

输入:n 输出:n!中含有0的个数。


输出:n!中含有0的个数。
)

题目

1、 使用分治法完成下面编程
输入:n
输出:n!中含有0的个数。
例如:输入:10
输出:2
因为10!=3628800,其中0的个数为2
例如:输入:15
输出结果:4
因为15!= 1307674368000,其中0的个数为4
例如:输入:20
输出结果:7
因为20!= 2432902008176640000,其中0的个数为7
注意:n的取值范围从1到50

程序代码

package com.算法设计与分析报告题目;

import java.util.Scanner;

import com.Dome2Sum.Demo2Sum;

public class text1 {

	// 求阶乘
	public static double jiecheng(int M) {
		if (M == 1) {		
			return 1;
		}
		return M * jiecheng(M - 1); 
	}

	// 求有几个0
	static int sum(double n){
		int sum = 0;//记零的个数
		while(n>1){	// 数字只剩一位是停止
			if(Math.floor(n%10) == 0){  //取余后向下取整,尾数为零,sum加1
			sum +=1;
			}
			n=n/10;			//去除最后一个数(个位数)即数字右移一位。
		
		}
		return sum;
	}

	public static void main(String[] args) {

		int n;
		double y;				//n输入求阶乘的数, y记录求阶乘后的值 
		Scanner sc = new Scanner(System.in);
		System.out.print("输入1~50之间的数n:");
		n = sc.nextInt();		//界面输入求阶乘的数
		if(n < 1 || n > 50){    //判断是否在输入范围内
			System.out.println("你输入的数不在1~50之间");
		}else{
		y = text1.jiecheng(n);	//调用方法求阶乘
//		System.out.println(y);	//输出n!的数  //此条语句为测试用题目没要求
		int sum = text1.sum(y); //调用计算0个数的函数
		System.out.println( n +"!中含有0的个数为:" + sum);
		}
	}

}

运行结果截图

在这里插入图片描述

发布了40 篇原创文章 · 获赞 16 · 访问量 5269

猜你喜欢

转载自blog.csdn.net/CSDNWuZhiChun/article/details/103396468
今日推荐