罗汉斋的做法:C语言,递归问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 07:18:24
请问C语言递归,在内存是怎么运行的?
还有一个问题:输入一个数,以二进制形式输出,用递归怎么做?
哪位大侠教教我,我是自学的。

#include<stdio.h>
int bit[20],*p=bit;
void trans(int n)
{
if(n==0||n==1)
{
*p=n;
}
else
{
*p=n%2;
p++;
trans(n/2);
}
}

void main()
{
int num;
printf("please input a decimal number:");
scanf(" %d",&num);

trans(num);

while(p>=bit)
{
printf("%d",*p);
p--;
}
}

不停的除2求余就是了
你既然用递归那就不要去想它工作的方式(会晕哦)。
只有手工操作stack时采用。
看看下面这个手工操作stack全排列的例子再与递归的比较就多半看得出递归到底是在干嘛了。
#include <stdio.h>
#include <stdlib.h>
#define n 10
main()
{
int dep,i,j,s;
int flag[11],data[11];
for(i=0;i<11;i++) flag[i]=0;
dep=0;
do
{
dep++;
s=i=0;
do
{
i++;
if(i<=n&&flag[i]==0)
{
data[dep]=i;
flag[i]=1;
if(dep==n)
{
for(j=1;j<=n;j++)
printf("%d",data[j]);
printf("\n");
}
s=1;
}
else if(i>n)
{
dep--;
if(dep==0) s=1;
else
{
i=data[dep];
data[dep]=0;
flag[i]=0;
}
}
else s=0;
}while(s==0);
}while(dep>0);
getch();
return 0;
}

在内存,晕,得看编译器是哪个种类啊.
递归是让一个函数从其内部调用其自身,这小问题扯不上啊@@
难道你想学汇编啊?或是做实验?