All pastes #833766 Raw Edit

Unnamed

public text v1 · immutable
#833766 ·published 2007-12-27 16:59 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *buffer;

/* kinder to stack */
const int range = 'a'+26;
int length = 0;

int spin(register char* p){
        /* 26 == alphabet */
        for(*p='a';*p<range;*p+=1){
                printf("%s\n",buffer);
                /*Recursion*/
		            if(p < buffer+length) /* one less call, same branches */
                    spin(p+1);
        }

        return 1;
}

/*
 * ./recurse <num_chars>
 * ./recurse 3
 */
int main(int argc, char ** argv) {
        if(argc!=2) return argc;

        int pass_length = atoi(argv[1]);

        buffer = (char *) calloc(pass_length+1,sizeof(char));
        buffer[pass_length]='\0';
        memset(buffer,'a',pass_length);

        /* This is a call to a recursive function */
        length = pass_length-1;
        spin(buffer);
        return 0;
}

/*

old
------------------------- 
real    0m49.464s
user    0m0.944s
sys     0m3.292s
-------------------------

new
-------------------------
real    0m10.825s
user    0m0.308s
sys     0m1.436s
-------------------------
*/