Java作业第7章

package homework05;  
 
import java.math.BigInteger;  
 
public class Ch07_3 {  
     public static double factorial(int n)   //求阶乘函数     
        {        
            if(n==0) return 1;        
            else return n* factorial(n-1);        
        }   
     public static BigInteger factorial2(int n){  
         BigInteger bigInt=null;  
         if(n==0) {  
             bigInt=new BigInteger("1");  
             return bigInt;  
         }  
              
         else{  
             bigInt=new BigInteger(Integer.toString(n));  
             return bigInt.multiply(factorial2(n-1));  
         }  
     }  
       
    public static void main(String[] args) {  
        /*4、计算1+2!+3!+4!+···从第100项到200项之和*/    
        double f=0;     
        for(int k=100;k<=200;k++){     
            f+=factorial(k);     
        }     
        System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+f);  //此时输出的值是Infinity   
//             Infinity表示正无穷大,即大于dOUble类型所能表示的最大数值。负无穷大将输出-Infinity.  
//             实际上,任何计算结果只要超出double类型所能表示的最大数值,就会产生这样的结果。       
        //故使用大整数来处理。  
        BigInteger result=new BigInteger("0");  
        for(int k=100;k<=200;k++){     
            result=result.add(factorial2(k));     
        }     
        System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+result);   
        }     
 
    } 
package homework05;

import java.math.BigInteger;

public class Ch07_3 {
  public static double factorial(int n)   //求阶乘函数  
     {     
         if(n==0) return 1;     
         else return n* factorial(n-1);     
     }
  public static BigInteger factorial2(int n){
   BigInteger bigInt=null;
   if(n==0) {
    bigInt=new BigInteger("1");
    return bigInt;
   }
   
   else{
    bigInt=new BigInteger(Integer.toString(n));
    return bigInt.multiply(factorial2(n-1));
   }
  }
 
 public static void main(String[] args) {
  /*4、计算1+2!+3!+4!+···从第100项到200项之和*/ 
        double f=0;  
        for(int k=100;k<=200;k++){  
            f+=factorial(k);  
        }  
        System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+f);  //此时输出的值是Infinity
//             Infinity表示正无穷大,即大于dOUble类型所能表示的最大数值。负无穷大将输出-Infinity.
//             实际上,任何计算结果只要超出double类型所能表示的最大数值,就会产生这样的结果。    
        //故使用大整数来处理。
        BigInteger result=new BigInteger("0");
        for(int k=100;k<=200;k++){  
         result=result.add(factorial2(k));  
        }  
        System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+result);
        }  

 }


 

结果:

1+2!+3!+4!+···从第100项到200项之和:Infinity
1+2!+3!+4!+···从第100项到200项之和:792621072814943158937574954417696054502273470568077747007887743862285047941581535541498718312275086275679893343076013862361579680670972527976009279036348551929550827607601145450876014530359530008733947699274904382825444692112993342058966668017369617374101405221613980910401559347844227172278387932925351155828685624342954436057587785914951951445917696000000000000000000000000

此题正确与否有待验证。

view plaincopy to clipboardprint?
package homework05;  
 
import java.util.HashSet;  
import java.util.Iterator;  
 
/* 
 * 题目:有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集。 
 */ 
public class Ch07_4 {  
      
    public static void displaySet(HashSet temp){  
        Iterator iter=temp.iterator();  
        while(iter.hasNext()){  
            Integer te=(Integer) iter.next();  
            System.out.print(te.intValue()+"/t");  
        }  
        System.out.println();//换行。  
    }  
 
    public static void main(String[] args) {  
        Integer[] a={1,2,3,4};  
        Integer[] b={1,3,7,9,11};  
        HashSet A=new HashSet();  
        HashSet B=new HashSet();  
        for(int i=0;i             A.add(a[i]);  
        }  
        for(int i=0;i             B.add(b[i]);  
        }  
          
        HashSet tempSet=(HashSet)A.clone();  //作为中间变量  保存集合A的原始值。  
          
        A.addAll(B);  //并集  
        System.out.print("输出A和B并集的结果:");  
        displaySet(A);   //输出结果。  
          
        A=(HashSet)tempSet.clone();  
        A.retainAll(B);  //交集  
        System.out.print("输出A和B交集的结果:");  
        displaySet(A);   //输出结果。  
          
        A=(HashSet)tempSet.clone();  
        A.remove(B);  //交集  
        System.out.print("输出A和B差集的结果:");  
        displaySet(A);   //输出结果。  
          
    }  
 

package homework05;

import java.util.HashSet;
import java.util.Iterator;

/*
 * 题目:有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集。
 */
public class Ch07_4 {
 
 public static void displaySet(HashSet temp){
  Iterator iter=temp.iterator();
  while(iter.hasNext()){
   Integer te=(Integer) iter.next();
   System.out.print(te.intValue()+"/t");
  }
  System.out.println();//换行。
 }

 public static void main(String[] args) {
  Integer[] a={1,2,3,4};
  Integer[] b={1,3,7,9,11};
  HashSet A=new HashSet();
  HashSet B=new HashSet();
  for(int i=0;i    A.add(a[i]);
  }
  for(int i=0;i    B.add(b[i]);
  }
  
  HashSet tempSet=(HashSet)A.clone();  //作为中间变量  保存集合A的原始值。
  
  A.addAll(B);  //并集
  System.out.print("输出A和B并集的结果:");
  displaySet(A);   //输出结果。
  
  A=(HashSet)tempSet.clone();
  A.retainAll(B);  //交集
  System.out.print("输出A和B交集的结果:");
  displaySet(A);   //输出结果。
  
  A=(HashSet)tempSet.clone();
  A.remove(B);  //交集
  System.out.print("输出A和B差集的结果:");
  displaySet(A);   //输出结果。
  
 }

}
 

运行结果:

输出A和B并集的结果:1 2 3 4 7 9 11
输出A和B交集的结果:1 3
输出A和B差集的结果:1 2 3 4

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/youshini/archive/2010/03/25/5415460.aspx

你可能感兴趣的:(Java作业第7章)