Tag Archives: recursion

permute the string – C program

15 Jan
#include<stdio.h>

int permuteString(char []);void doPermute(char [], char [], int [], int , int );
main() {
char string[] = “sun”; int stat = permuteString(string);
}
int permuteString(char inString[]) {
int length,i, *used; char *out;
length = strlen(inString);
out = (char *)malloc(length + 1); if(!out) {        return 0; }
/* so that printf doesn’t run past the end of buffer */ out[length] = ”; used = (int *)malloc(sizeof(int) * length);
if(!used) {        return 0; }
/* start with no letters used, so zero array */ for( i = 0; i < length; i ++) {        used[i] = 0; }
doPermute(inString, out, used, length, 0);

free(out);

free(used);

return 1; //success

}

void doPermute(char in[], char out[], int used[], int length, int recurLevel ) {

int i ;

/* base case */

if(recurLevel == length ) {

printf(“%s\n”, out);

return;

}

/* recursive case */

for(i = 0; i < length ; i ++) {

if(used[i]) {

continue;

}

out[recurLevel] = in[i]; /* put current letter in output */

used[i] = 1; /* mark letter as used */

doPermute(in, out, used, length, recurLevel + 1);

used[i] = 0; /* unmark this letter */

}

}

output :

sun
snu
usn
uns
nsu
nus

Recursion : Powering a number

10 Mar

package com.bundle.algos;

public class PoweringNumber {
public static void main(String args[]){
int result = power(2,11);
System.out.println(“Result : ” + result);
}

public static int power(int number,int exp){
if(exp <0){
System.out.println(“Enter a >=0 value for exponent”);
System.exit(-1);
}
int product = 1;
if(exp == 0){
return 1;
}
if(exp == 1){
return (number*exp);
}
if(exp%2 !=0){
//product = power(number,((exp-1)/2))*power(number,((exp-1)/2))* (number*1);
product = power(number,((exp-1)/2))*power(number,((exp+1)/2));
}else{
product = power(number,(exp/2))*power(number,(exp/2));
}
return product;
}
}

Follow

Get every new post delivered to your Inbox.