intermediate/RecursionExamples

From ggc

Jump to: navigation, search

001 package intermediate;
002 
003 import wiki.Wiki;
004 import java.util.*;
005 /**
006  * All about my application.
007  @author My Name Here
008  */
009 public class RecursionExamples
010 {
011   public int sum(int[] nums)
012   {
013     return sum(nums, nums.length-1);
014   }
015 
016   private int sum(int[] nums, int maxIndex)
017   {
018     if(maxIndex==0)//base case
019     {
020       return nums[0];
021     }
022     else //recursive step
023     {
024       return nums[maxIndex]+sum(nums, maxIndex-1);
025     }
026   }
027 
028   public boolean find(String[] names, String target)
029   {
030     return find(names, target, names.length-1);
031   }
032 
033   private boolean find(String[] names, String target, int maxIndex)
034   {
035     if(maxIndex==0)
036     {
037       return names[0].equals(target);
038     }
039     else
040     {
041       return names[maxIndex].equals(target|| find(names, target, maxIndex-1);
042     }
043   }
044 
045   //assume nums is in order
046   public boolean binarySearch(int[] nums, int target)
047   {
048     return binarySearch(nums, target, 0, nums.length-1);
049   }
050 
051   private boolean binarySearch(int[] nums, int target, int start, int end)
052   {
053     if(start==end)
054     {
055       Wiki.out.println("looking at "+nums[start]);
056       return nums[start]==target;
057     }
058     else if(end-start==1)
059     {
060       Wiki.out.println("looking at "+nums[start]);
061       Wiki.out.println("looking at "+nums[end]);
062       return nums[start]==target || nums[end]==target;
063     }
064     else
065     {
066       int middleIndex=(start+end)/2;
067       Wiki.out.println("looking at "+nums[middleIndex]);
068       if(nums[middleIndex]==target)
069       {
070         return true;
071       }
072       else if(target>nums[middleIndex])
073       {
074         return binarySearch(nums, target, middleIndex+1, end);
075       }
076       else
077       {
078         return binarySearch(nums, target, start, middleIndex-1);
079       }
080     }
081   }
082 
083   public static void main(String[] args)
084   {
085     int[] nums=new int[500000];
086     for(int i=0; i<nums.length; i++)
087     {
088       nums[i]=(int)(Math.random()*100000);
089     }
090     RecursionExamples example=new RecursionExamples();
091     //Wiki.out.println("The sum is "+example.sum(nums));
092 
093     Arrays.sort(nums);
094     //for(int n: nums)
095     //Wiki.out.print(n+" ");
096     //Wiki.out.println("");
097     Wiki.out.println("Looking for 5000:  found="+example.binarySearch(nums, 5000));
098 
099     String[] names={"Hello""Goodbye""Dolly"};
100     Wiki.out.println("Goodbyes, in names? "+example.find(names, "Goodbyes"));
101   }
102 }


Download/View intermediate/RecursionExamples.java





Views
Personal tools
Add to 
del.icio.usAdd to 
diggAdd to 
FacebookAdd to 
favoritesAdd to 
GoogleAdd to 
MySpaceAdd to 
PrintAdd to 
SlashdotAdd to 
StumbleUponAdd to 
Twitter