891 views
1 votes
1 votes

What will be output of below program

#include<stdio.h>
int tech(int,int);
int main(void){
    int a=tech(15,4);
    printf("%d",a);
    return 0;
}
int tech(int p,int q){
    if(p%q==0)
    return q;
    else
    tech(q,p%q);
}

2 Answers

Best answer
1 votes
1 votes

The given program finds the gcd of the two numbers using long division method recursively . We can show it here : 

tech (15 , 4)   ==>  tech (4 , 15 % 4)  = tech (4 , 3)

                    ==>   tech(3 , 4 % 3)    =  tech(3,1)

                    ==>   tech(3 , 1)           =  1     as  3 % 1 == 0

Hence return value of the function is 1.

Also if we see gcd(15,4) , it is also 1.

Hence the output of the given program is 1 .

selected by
1 votes
1 votes

here is my answer.

Related questions

0 votes
0 votes
1 answer
1
Debargha Mitra Roy asked 3 days ago
51 views
#include <stdio.h int main() { int a[3] = {1, 3, 5, 7, 9, 11}; int *ptr = a[0]; ptr += sizeof(int); printf("%d", *ptr); return 0; }(Assume size of int to be $2$ bytes.)T...
0 votes
0 votes
2 answers
3
Debargha Mitra Roy asked Apr 10
104 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
1 votes
1 votes
1 answer
4
SSR17 asked Feb 29
252 views
#include <stdio.h int main() { int i = -1; int x = (unsigned char)i; printf("%d", x); return 0; }output is 255 , but please explain how