Q4 Write and run the java program that computes the Factoria
Q4: Write and run the java program that computes the Factorial of a given number using a Recursive method. ( 20 points )
Submit your program files as .java file that can be run. And submit in the document sample run for example given the value 4 the factorial is 24
Q5. What is the advantage and disadvantage of using recursion? ( 5 points )
Q6. Briefly explain what is infinite recursion, and what causes it to happen? ( 5 points )
Solution
import java.util.*;
public class lab0604{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println(\"enter number:\");
int n=sc.nextInt();
int facte= fact(n);
System.out.println(facte);
}
private static int fact(int n) {
if(n==0)
return 1;
else
return n*fact(n-1);
}
}
output:
enter number:
6
720
5 ans)one of the best advantage of recursion is simple in desinging algorithm and program.with the simple steps or less steps it finishes work rather than taking or writing huge code.
it is mostly suits for problems based on tree structure and it is best in factor like time complexity
disadvantages:one of the main disadvantage is it uses more memory of stack and it slowler compare to others due to overhead maintaing of stack etc,
when we use iteration in our program it takes less memory compare to recursion.tracing a recurion is quite not so simple it creates a confusion
6 ans)when a recursin continuies runs without any stop is called infinite recursion.infinite recursion causes stack overflow.when we a program throws s stack overflow error we can say that stack is unable to write on to heap.this is due to bad recursion occurs deeply .and it should be overcome to away from stack over flow error
public class lab0604{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println(\"enter number:\");
int n=sc.nextInt();
int facte= fact(n);
System.out.println(facte);
}
private static int fact(int n) {
// if(n==0)
// return 1;
// else
return n*fact(n-1);
}
}
enter number:
5
Exception in thread \"main\" java.lang.StackOverflowError
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
at automativ.lab0604.fact(lab0604.java:17)
example for infinite recursion shows stack overflow


