Are you a great C coder? | Feb. 13, 2010

Skilled contributor
11Feb2010,09:27   #1
techgeek.in's Avatar
one day I and my friend were wondering what if C had no "Loops" ? Suppose C language has no "loops"(while, forloop, do while loop). Now, how are you going to implement a loop logic in C without while, for loop and do while loop ?? Explain with example..
Go4Expert Founder
13Feb2010,18:00   #2
shabbir's Avatar
Approved
Mentor
14Feb2010,15:13   #3
xpi0t0s's Avatar
Use if and goto. Not tested, cos I rarely use gotos:
Code:
int i=0;
:loop
printf("%d ");
i++;
if (i<10) goto loop;
Skilled contributor
14Feb2010,18:52   #4
techgeek.in's Avatar
dnt use GOTO...goto is not structured...
Skilled contributor
14Feb2010,18:54   #5
techgeek.in's Avatar
shabbir...wud u continue this? I think noone is able to give the ans...
Go4Expert Founder
14Feb2010,19:26   #6
shabbir's Avatar
Lets do it buddy
Mentor
14Feb2010,22:12   #7
xpi0t0s's Avatar
Answer must be tail recursion then:
Code:
void test2a(int i)
{
	if (i<10)
	{
		printf("%d ",i);
		test2a(i+1);
	}
}

void test2()
{
	test2a(0);
}
Skilled contributor
14Feb2010,23:11   #8
techgeek.in's Avatar
Quote:
Originally Posted by xpi0t0s View Post
Answer must be tail recursion then:
Code:
void test2a(int i)
{
	if (i<10)
	{
		printf("%d ",i);
		test2a(i+1);
	}
}

void test2()
{
	test2a(0);
}
Wow! at last...
Tail recursion is the only way to implement loop logic.. this process is used in PLT scheme.Take another example from me:-

Code:
# include<stdio.h>
# include<conio.h>

void ForLoop(int,int);
void main()
{

int i,n;
clrscr();
i=0;
n=10;
ForLoop(i,n);
getch();
}


void ForLoop(int i,int n)
{
static int count;
if(i==n)
printf("loop ended with count= %d", count);
else
{
count++;
i++;
ForLoop(i,n);
}
}
believe me you can implement any loop program using tail recursion.
Mentor
15Feb2010,14:13   #9
xpi0t0s's Avatar
Only if you've got enough stack space. If you haven't then you have to (a) use goto or (b) unroll the loop.
Go4Expert Founder
15Feb2010,16:50   #10
shabbir's Avatar
Quote:
Originally Posted by xpi0t0s View Post
Only if you've got enough stack space. If you haven't then you have to (a) use goto or (b) unroll the loop.
Offtopic comment:
Have you seen your Visitor Message?