鱼C论坛

 找回密码
 立即注册
查看: 2629|回复: 3

这道递归题我有些看不懂,请教高人指点

[复制链接]
发表于 2011-10-25 20:37:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <string.h>
#include <stdio.h>
void f(int a,char *m)
{static int p=0;
if(a)
{*(p+m)=a%10+48;
p++;
f(a/10,m);
}
else *(p+m)=0;
}
main()
{  
int a,i;
char m[100];
scanf("%d",&a);

f(a,m);
for(i=strlen(m)-1;i>=0;i--)
putchar(m[i]);
}
static的作用是什么?还有每次递归的时候p的不是不变的吗?麻烦解说请详细点
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-25 21:16:14 | 显示全部楼层
static的作用是声明为局部静态变量,静态变量与动态变量的区别在于:静态变量将在整个程序结束时销毁,动态变量在本函数调用结束时销毁。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-25 21:18:18 | 显示全部楼层
static int p=0;  表示p为静态局部变量。。。一般的变量在函数调用结束以后,变量的空间都会被撤销,再调用这个函数时,重新分配空间给它。。而静态变量在函数调用结束以后不会撤销。。再调用这个函数时,这个值就是上次调用变化后的值,不会被重新被赋值为  0.
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-25 21:42:12 | 显示全部楼层

呵呵,懂了,这个问题纠结我有一阵子了
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 03:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表