long firstBadVersion(long n, long stepsize) {
     if (stepsize == 1 && isBadVersion(n)) return (n);
     if (!isBadVersion(n)) {
         long jumpto = n+stepsize;
         if (jumpto > number && stepsize == 1) {
             return number; //error case
         } else if (jumpto > number) {
             return firstBadVersion(n+1, 1);
         } else {
             return firstBadVersion(jumpto, stepsize*2);
         }
     }
     return firstBadVersion(n-(stepsize/2)+1, 1);
 }
Esempio n. 2
0
int main(int argc, char **argv) 
{
	int n = 20;
	int i = 0;
	int result = 0;
	
	for(i = 1; i < n; i++) {
		call_times = 0;
		result = firstBadVersion(i);
		printf("n = %d, result = %d, call %d times\n", i, result,  call_times);
	}


	return 0;
}
 int firstBadVersion(int n) {
     //if (isBadVersion(1)) return 1;
     number = n;
     return firstBadVersion(1, 1);
 }
Esempio n. 4
0
int main()
{
    firstBadNum = 1702766719;
    cout << firstBadVersion(2126753390) << endl;
    return 0;
}