```
public int findMin(int[] nums) {
return findMin(nums, 0, nums.length-1);
}
private int findMin(int[] nums, int start, int end){
if(start == end){
return nums[start];
}else{
int mid = (start+end)/2;
if(nums[start] < nums[mid] && nums[mid] < nums[end]){
return nums[start];
}else{
int leftMin = findMin(nums, start, mid);
int rightMin = findMin(nums, mid+1, end);
return (leftMin<rightMin) ? leftMin : rightMin;
}
}
}
```