/* ***************************************************************************
 $Workfile: Iteration.java$
   $Author: kalcock$
     $Date: 01/26/07 09:57:42$
 $Revision: 2$
 *****************************************************************************
 Package
 ****************************************************************************/
package com.keithalcock.t180;
/* ***************************************************************************
 Imports
 ****************************************************************************/

/* ***************************************************************************
 Class
 ****************************************************************************/
public class Iteration {

    // 1.
    public static void infiniteLoop() {
        while (true);
    }
    
    // 3.
    public static void count() {
        for (int i=0;true;i++)
            System.out.println(i);
    }
    
    public static void countFrom(int n) {
        for (int i=n;true;i++)
            System.out.println(i);
    }
    
    // 5.
    public static void countFromUpTo(int min,int max) {
        for (int i=min;i<=max;i++)
            System.out.println(i);
    }
    
    public static void newCountFromUpTo(int cur,int max) {
        for (;cur<=max;cur++)
            System.out.println(cur);
    }
    
    // 7.
    public static void backwardsCountFrom(int n) {
        for (;n>=0;n--)
            System.out.println(n);
    }

    // 8.
    public static int sumUpTo(int n) {
        int sum=0;
        
        for (int i=0;i<=n;i++)
            sum+=i;
        return sum;
    }
    
    // 9.
    public static int factorial(int n) {
        int product=1;
        
        for (int i=1;i<=n;i++)
            product*=i;
        return product;
    }
    
    // 10.
    public static int arraySum(int[] array) {
        int sum=0;
        
        for (int i=0;i<array.length;i++)
            sum+=array[i];
        return sum;
    }
    
    // 11.
    public static int arrayMin(int[] array) {
        int min=array[0];
        
        for (int i=1;i<array.length;i++)
            if (array[i]<min)
                min=array[i];
        return min;
    }
    
    // 12.
    public static int fib(int n) {
        int fibi,fibi_1,fibi_2;

        fibi=fibi_1=fibi_2=1;
        for (int i=3;i<=n;i++) {
            fibi=fibi_1+fibi_2;
            fibi_2=fibi_1;
            fibi_1=fibi;           
        }
        return fibi;
    }

    // 13.
    public static void println(int n) {
        String text="";

        do {
            int quotient=n/10;
            int remainder=n%10;

            text=Integer.toString(remainder)+text;
            n=quotient;
        } while (n!=0);
        System.out.println(text);
    }

    // 14.
    public static int gcf(int left,int right) {        
        while (true) {
            int remainder=left%right;
            
            if (remainder==0)
                return right;
            left=right;
            right=remainder;
        }
    }
    
    public static int lcm(int left,int right) {
        return left/gcf(left,right)*right;
    }

    // 15.
    public static boolean isPalindrome(String text) {
        for (int i=0;i<text.length();i++)
            if (text.charAt(i)!=text.charAt(text.length()-1-i))
                return false;
        return true;
    }

    // 16.
    public static double continuousFraction(int max) {
        double value=1.0;
        
        for (int i=0;i<=max;i++) {
            value=1.0+6.0/value;
            System.out.println(i+" "+value);
        }
        return value;
    }
    
    // 17.
    public static void main(String[] args) {
//        infiniteLoop();
//        count();
//        countFrom(0);
//        countFromUpTo(0,10);
//        newCountFromUpTo(0,10);
//        backwardsCountFrom(10);
//        System.out.println(sumUpTo(5));
//        System.out.println(factorial(5));
//        System.out.println(arraySum(new int[]{1,2,3,4,5}));
//        System.out.println(arrayMin(new int[]{3,4,5,1,2}));
//        System.out.println(fib(6));
//        println(12345);
//        System.out.println(gcf(6,22));
//        System.out.println(lcm(6,21));        
//        System.out.println(isPalindrome("bob"));
//        System.out.println(isPalindrome("the"));
        System.out.println(continuousFraction(40));
    }
}
/* **************************************************************************/
