+ 1
Just a minor bug i think
i wanna print first index of array and getting just zero. i think my base condition is fine. Problem is occurring in the return recursive part ?? correct me if I'm wrong here is my attempt 👇 https://code.sololearn.com/c1Szk9Q17Nru/?ref=app
13 Answers
+ 2
Jayakrishna🇮🇳
By his logic he is getting 0 on value 2 also which should be index 1
+ 2
A͢J function is predefined i could not pass extra variable so i have used this way 👇
class HelloWorld {
public static int firstIndex(int input[], int x) {
return firstOccurance(input,x,0);
}
public static int firstOccurance(int input[],int x,int start){
if(start==input.length){
return -1;
}
if(input[start]==x){
return start;
}
return firstOccurance(input,x,start+1);
}
public static void main(String[] args) {
int[] arr={9, 8, 10, 8};
int x = 10;
System.out.println(firstIndex(arr,x));
}
}
+ 2
A͢J Thanks you sir 😌
+ 1
Davinder Kumar
You are always comparing with 0 here
int start=0;
if(input.length == start){
return
start will be always 0
+ 1
Sir i want to minimise the length of array so it can iterate over array and find my desire output. I tried copyArray approach here but that doesn't work . what sort of code i can write here then 😐
+ 1
Davinder Kumar
Try with reference variable
class HelloWorld {
public static int firstIndex(int input[], int i, int x) {
if(input.length <= i)
return -1;
if(input[i] == x)
return i;
return firstIndex(input, ++i, x);
}
public static void main(String[] args) {
int arr[] = {1, 2, 8, 4, 5, 2};
int num = 8;
int i = 0;
System.out.println(firstIndex(arr, i, num));
}
}
+ 1
Davinder Kumar
That is also fine
+ 1
A͢J one more question is that can i use these ways to get desire results in real interviews if the function is predefined?
+ 1
Davinder Kumar
Yes doesn't matter but your all test cases should satisfy.
+ 1
Jayakrishna🇮🇳 i couldn't do it from main because it is predefined function and i had to solve it by using those two parameters only that's why i additionally defined new function in firstIndex function. I hope you got me.
0
Any array first index is 0 only..!
Am I missing anything to understand this question?
Your code,
if(input[start]==x){
return start;
Here start = 0, x is index you passed is 1
So input[0] = 1 so 1 == 1 true then returns start which value is 0.
What else output you expecting?
edit:
code changed??
0
Seems original code changed..! It makes confusion, better make copy for updates..
Is there any need to use 2 methods..?
If not, Can be done using firstOccurence directly in main..
0
Davinder Kumar Yes. Just got noticed, already mentioned to AJ reply..