You are on page 1of 21

LAPORAN RESMI ALGORITMA DAN

STRUKTUR DATA (RECURSION)


Yuliarta Rizki Nusantoko (2103181008)
2.TUJUAN
1.Memahami mengenai konsep rekursif

2.Mampu memecahkan permasalahan dengan konsep rekursif.


3.PERCOBAAN
1. Listing Program :

public int factorial(int n) {


if(n==1)
return n;
else
return n*factorial(n-1);
}
Outputnya :

Analisa :
Non tail = return n*factorial(n-1)

2. Listing Program :

public int bunnyEars(int bunnies) {


if(bunnies==0)
return 0;
else {
return bunnyEars(bunnies-1)+2;
}
}
Outputnya :
Analisa :
Non-tail : return bunnyEars(bunnies-1)+2;

3. Listing Program :

public int fibonacci(int n) {


if(n==0)
return 0;
else if(n==1)
return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}
Outputnya :

Analisa :
Non-tail : return fibonacci(n-1) + fibonacci(n-2)

4. Listing Program :

public int triangle(int rows) {


if(rows==0)
return 0;
else
return rows+triangle(rows-1);
}
Outputnya :

Analisa :
Non-tail : return rows+triangle(rows-1)

5. Listing Program :

public int bunnyEars2(int bunnies) {


if(bunnies==0)
return 0;
else if(bunnies%2==0) {
return bunnyEars2(bunnies-1)+3;
}
else {
return bunnyEars2(bunnies-1)+2;
}
}
Outputnya :

Analisa :
Non-tail : return bunnyEars2(bunnies-1)+3/2

6. Listing Program :

public int count8(int n) {


if(n==0)
return 0;
else if(n%10==8) {
if(n/10%10==8)
return 2+count8(n/10);
return 1+count8(n/10);
}
else
return count8(n/10);
}
Outputnya :

Analisa :
Non-tail : return count8(n/10), dll

7. Listing Program :

public int powerN(int base, int n) {


if(n==0)
return 0;
else if(n==1)
return base*n;
else
return base*powerN(base,n-1);
}
Outputnya :
Analisa :
Non –tail = return base*powerN(base,n-1)

8. Listing Program :

public int count7(int n){

if(n==0)

  return 0;
  if(n%10==7)

    return 1+count7(n/10);
return count7(n/10);
}
Outputnya :
Analisa :
Non-tail : return 1+count7(n/10)
Tail : return count7(n/10)

9. Listing Program :

public int countX(String str) {

    if(str.length()==0)

        return 0;
    else if(str.charAt(0)=='x')

        return countX(str.substring(1))+1;

    else
        
return countX(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return countX(str.substring(1))+1 & return countX(str.substring(1))

10. Listing Program :

public int countHi(String str)


{
    if(str.length() < 2)
        return 0;
    if(str.charAt(0) == 'h' && str.charAt(1) == 'i')
        return 1 + countHi(str.substring(2));
    return countHi(str.substring(1));
}
Outputnya :
Analisa :
Non-tail : return 1 + countHi(str.substring(2))
Tail : countHi(str.substring(1))
11. Listing Program :

public String changeXY(String str)


{
    char ch;
    if(str.length() == 0)
        return str;
    ch = str.charAt(0);
    if(ch == 'x')
        return 'y' + changeXY(str.substring(1));
    return ch + changeXY(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return ‘y’ + changeXY(str.substring(1))
Tail : return ch + changeXY(str.substring(1))
12. Listing Program :

public String changePi(String str)


{
    String left;
    if(str.length() < 2)
        return str;
    if(str.substring(0, 2).equals("pi"))
        return "3.14" + changePi(str.substring(2));
    return str.charAt(0) + changePi(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return “3.14” + changePi(str.substring(2))
Tail : return str.charAt(0) + changePI(str.substring(1))

13. Listing Program :

public int strCount(String str, String sub)


{
  if(str.length() < sub.length())
    return 0;
  else if(str.substring(0, sub.length()).equals(sub))
    return 1 + strCount(str.substring(sub.length()), sub);
  else
   return strCount(str.substring(1), sub);
}
Outputnya :

Analisa :
Non-tail : return strCount(str.substring(1), sub)

14. Listing Program :

public String allStar(String str) {


if(str.length()<2)
return str;
else
return str.charAt(0) + "*" + allStar(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : str.charAt(0) + “*” + allStar(str.substring(1))

15. Listing Program :

public boolean array6(int[] nums, int index) {


if(index==nums.length)
return false;
else if((nums[index]==6))
return true;
else
return array6(nums, index+1);
}
Outputnya :
Analisa :
Non-tail : return array6(nums,index+1)

16. Listing Program :

public int array11(int[] nums, int index) {


if(index==nums.length)
return 0;
else if(nums[index]==11)
return 1 + array11(nums, index+1);
else
return array11(nums, index +1);
}
Outputnya :

Analisa :
Non-tail : array11(nums, index+1)

17. Listing Program :

public boolean array220(int[] nums, int index) {


if(index >= nums.length -1)
return false;
else if(nums[index]*10==nums[index+1])
return true;
else
return array220(nums, index+1);
}
Outputnya :
Analisa :
Non-tail : return array220(nums, index+1)

18. Listing Program :

public int count11(String str) {


if(str.length()<2)
return 0;
else if(str.substring(0,2).equals("11"))
return 1+count11(str.substring(2));
else
return count11(str.substring(1));
}
Outputnya :

Analisa :
r

19. Listing Program :

public int countAbc(String str) {


if(str.length()<3)
return 0;
else if(str.substring(0,3).equals("abc"))
return countAbc(str.substring(3))+1;
else if(str.substring(0,3).equals("aba"))
return countAbc(str.substring(2))+1;
else
return countAbc(str.substring(1));
}
Outputnya :
Analisa :
Non-tail : return countAbc(str.substring(1))

20. Listing Program :

public int countHi2(String str) {


if(str.length()<2)
return 0;
if(str.length()==2)
return(str.equals("hi")) ? 1 : 0;
else if(str.charAt(0)=='x'){
if(str.substring(1,3).equals("hi"))
return countHi2(str.substring(3));
return countHi2(str.substring(1));
}
else if(str.substring(0,2).equals("hi"))
return 1+countHi2(str.substring(2));
else if(str.substring(1,3).equals("hi"))
return 1+countHi2(str.substring(3));
else
return countHi2(str.substring(2));
}
Outputnya :
Analisa :
Non-tail : return countHi2(str.substring(2))

21. Listing Program :

public int countPairs(String str) {


if(str.length()<3)
return 0;
else if(str.charAt(0)==str.charAt(2))
return countPairs(str.substring(1))+1;
else
return countPairs(str.substring(1));
}
Outputnya :
Analisa :
Non-tail : return countPairs(str.substring(1))

22. Listing Program :

public String endX(String str) {


if(str.length()==0)
return str;
else if(str.charAt(0)=='x')
return endX(str.substring(1)) + 'x';
else
return str.charAt(0) + endX(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return str.charAt(0) + endX(str.substring(1))

23. Listing Program :


public boolean nestParen(String str)
{
  if(str.length() == 0)
    return true;
  else if(str.charAt(0) == '(' && str.charAt(str.length()-1) ==
')')
      return nestParen(str.substring(1, str.length()-1));
  else
   return false;
}
Outputnya :

Analisa :
Non-tail : return nestParen(str.substring(1,str.length()-1))

24. Listing Program :

public String noX(String str) {


if(str.length()==0)
return str;
else if(str.charAt(0)=='x')
return noX(str.substring(1));
else
return str.charAt(0) + noX(str.substring(1));
}
Outputnya :
Analisa :
Non-tail : return str.charAt(0) + noX(str.substring(1))

25. Listing Program :

public String pairStar(String str) {


if(str.length()<2)
return str;
else if(str.charAt(0)==str.charAt(1))
return str.charAt(0) + "*" + pairStar(str.substring(1));
else
return str.charAt(0) + pairStar(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return str.charAt(0) + pairStar(str.substring(1))

26. Listing Program :

public String parenBit(String str) {


if(str.length()<0)
return str;
else if(str.charAt(0)!='('){
if(str.charAt(str.length() - 1) != ')')
      return parenBit(str.substring(1, str.length()-1));
    return parenBit(str.substring(1));
}
else if(str.charAt(str.length() - 1) != ')')
    return parenBit(str.substring(0, str.length() - 1));
  else return str;
}
Outputnya :

Analisa :
Non-tail : return parenBit(str.substring(0, str.length() – 1 ))

27. Listing Program :

public boolean strCopies(String str, String sub, int n)


{
    if(n == 0)
        return true;
    else if(str.length() < sub.length())
        return false;
    else if(str.substring(0, sub.length()).equals(sub))
        return strCopies(str.substring(1), sub, n - 1);
    else
     return strCopies(str.substring(1), sub, n);
}
Outputnya :
Analisa :
Non-tail : return strCopies(str.substring(1), sub, n)

28. Listing Program :

public String stringClean(String str) {


if(str.length()<2)
return str;
else if(str.charAt(0)==str.charAt(1))
return stringClean(str.substring(1));
else
return str.charAt(0)+stringClean(str.substring(1));
}
Outputnya :

Analisa :
Non-tail : return str.charAt(0) + stringClean(str.substring(1))

29. Listing Program :

public int strDist(String str, String sub)


{
    if(str.length() < sub.length())
        return 0;
    else if(str.substring(0, sub.length()).equals(sub))
    {
        if(str.substring(str.length()-sub.length(),
str.length()).equals(sub))
            return str.length();
        return strDist(str.substring(0,str.length()-1), sub);
    }
    else
     return strDist(str.substring(1), sub);
}
Outputnya :

Analisa :
Non-tail : return strDist(str.substring(1), sub)

You might also like