递归的使用:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。将输出结果保留到至少8个小数点。

黑马程序员---------递归的的使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test26 {
/*
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。将输出结果保留到至少8个小数点。
分析:
 输入数字,从键盘输入一个数字,
递归算结果
 输出保留8位小数
*/
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
	
		result();//调用方法计算结果
	}
	/**
	 * 从键盘获取一个整数,
	 * @return  一个金盘输入的整数
	 */
 public static int getnum()
 {   
	 System.out.println("输入一个整数;");
	 Scanner sc = new Scanner(System.in); //键盘输入
	 int num =sc.nextInt();//获取值
	 sc.close();//关键盘输入
	 return num;
 }
 /**
  * 获取计算结果并打印出来
  * @return double 的结果
  */
 public static double result()
 {
	 DecimalFormat df2  = new DecimalFormat("###0.00000000");
	 
	 int in = getnum();	 //获取键盘输入的数据
	 double result ;	
	 double beis =Math.pow(10,8);//10的8次方
	 result=(double)((int)(getSUM1(in,0)*beis))/beis;//得到有八位小数的结果,但是假如结果没有八位时没有补零	  
	 System.out.println(df2.format(result));//输出8位小数结果,不到8位则补零
	 return result;
 }
 /**
  * 根据得到的值计算结果,使用递归方式
  * @param x 从键盘中获取的整数
  * @param sun 计算结果,最开始时这个值为0
  * @return  计算结果,double类型
  */
 public static  double getSUM1(int x,double sun)
 {

	  while(x>0)//当大于0时
	  {
	    sun +=(double)1/x;//计算1/x 的结果,并加到SUN当中
	    x=x-2;//x-2,如原来是3,则下一个计算1/1
	    getSUM1(x,sun);//递归
	  }
	  return  sun;//返回结果
 }
}

你可能感兴趣的:(递归的使用:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。将输出结果保留到至少8个小数点。)