C语言递归函数问题

Python011

C语言递归函数问题,第1张

# include <stdio.h>

int hex(unsigned long int x, char *a)

int main()

{

char a[9] = {0}

int n

unsigned long int x

scanf("%lu",&x)

n=hex(x,a)

printf("n=%d\n",n)

puts(a)

return 0

}

int hex(unsigned long int x, char *a)

{

char t[]="0123456789ABCDEF"

int n

if(x<16)

{

a[0]=t[x]

return 1

}

n=hex(x/16,a)

a[n]=t[x%16]

return 1+n //这里为什么要是1+n ?

}

----------------你的代码不对-------------------我改了一下!

1+n就是 返回高位的位置比如 2048 那么应该就是 800

分析 16进来

if(x<16)

{

a[0]=t[x]

return 1

}

第一次x=2048不执行

n=hex(x/16,a)

if(x<16)

{

a[0]=t[x]

return 1

}

第二次x=128不执行

n=hex(x/16,a)

if(x<16)

{

a[0]=t[x]

return 1

}

第三次x=8 a[0]=8返回1

那么到第二次也就是128的这次 a[n]=t[x%16] n=1;结束后a=“80”

返回的是2 n+1啊

到2048的这次也就是第一次a[n]=t[x%16] n=2 结束后 a=“800”

最后返回2+1 就是3

多个C文件, 但这多个C文件中只能有一个Main函数。 你就在有Main函数的文件里,用extern来引导别的C文件里的函数就可以了

比如说: Main.c

#include<reg51.h>

extern delay()

void main()

{

while(1)

{

//你是不是这个意思!!!! 希望你有帮助!

}

}

LCD1602.c

#include<reg51.h>

void delay()

{

//

}