Saturday, August 17, 2013

String to Integer using Recursion.

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define siz 10
char as[siz];

int string_to_int(char as[], int len, int i, int sum){
    if(i == len) return sum;
    sum = sum*10 + (as[i] - '0');
    string_to_int(as, len, i+1, sum);
}

int main()
{
    while(gets(as)){
        int len = strlen(as);
        cout<<string_to_int(as, len, 0, 0)<<endl;
    }
    return 0;
}

Reverse Integer using Recursion.

#include <iostream>
using namespace std;

int reverse_int(int n, int res){
    if(n == 0) return res;
    res = res*10 + (n%10);
    reverse_int(n/10, res);
}

int main()
{
    int n;
    while(cin>>n){
        cout<<reverse_int(n,0)<<endl;
    }
    return 0;
}

Given two integer start and end. Find the sum start to end(inclusive) using recursion.

#include <iostream>
using namespace std;
int sum(int start, int end){
    if(start>end) return 0;
    return start + sum(start+1, end);
}
int main()
{
    int start, end;
    while(cin>>start>>end){
        cout<<sum(start, end)<<endl;
    }
    return 0;
}

Make a block of characters using Recursion

#include <iostream>
#include <cstdio>
using namespace std;

void make_block(char c, int width, int height, int w){
    if(height == 0) return;
    else if(width == 0) {
        puts("");
        make_block(c, w, height-1, w);
    } else {
        cout<<c;
        make_block(c, width-1, height, w);
    }

}

int main()
{
    int width, height;
    char c;
    while(cin>>c>>width>>height){
        make_block(c, width, height, width);
    }
    return 0;
}

Given a list of integers. Join and print them using Recursion.

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
#define siz 100
string as[siz];

string join_list(string as[], int n, int i){
    if(n == i) return "";
    return as[i] + join_list(as, n, i+1);
}


int main()
{
    int n;
    while(cin>>n){
        for(int i=0; i<n; i++)
            cin>>as[i];
        cout<<join_list(as, n, 0);
    }
    return 0;
}

Given an array of integers. Add one to all the integers using Recursion.

#include <iostream>
#include <cstdio>
using namespace std;
#define siz 100
int a[siz];
void add_one(int a[], int n){
    if(n<0) return;
    a[n]+=1;
    add_one(a, n-1);
}

int main()
{
    int n;
    freopen("input.txt", "r", stdin);
    while(cin>>n){
        for(int i=0;i<n;i++){
            cin>>a[i];
        }
        add_one(a,n-1);
        for(int i=0;i<n;i++){
            cout<<a[i]<<" ";
        }
    }
    return 0;
}

Given a string. Find the String length using Recursion.

#include <iostream>
#include <cstdio>
using namespace std;
#define siz 100
char as[siz];
int find_length(char as[], int i){
    if(as[i]=='\0') return i;
    find_length(as,i+1);
}

int main()
{
    while(gets(as)){
        cout<<find_length(as,0)<<endl;
    }
    return 0;
}