直接上代码吧!
1, 递归实现n^k;
/*#include<stdio.h>
#include<stdlib.h>
int fun(int n,int k)
{
if(k>0)
return n*fun(n,k-1);
return 1;
}
int main()
{
int n = 2;
int k = 3;
int ret = fun(n,k);
printf("%d\n",ret);
return 0;
}*/
2. 递归求出一个非负整数的每一位之和
/*#include<stdio.h>
#include<stdlib.h>
int DisitSum(int n)
{
if(n>9)
return (n%10)+DisitSum(n/10);
else
return n%10;
}
int main()
{
int n = 0;
scanf("%d",&n);
if(n<0)
{
printf("请输入一个非负整数\n");
scanf("%d",&n);
}
printf("%d\n",DisitSum(n));
return 0;
}*/
3. 递归实现字符串的反向输出
/*
#include<stdio.h>
void reverse_string(char *str)
{
if(*str!='\0')
reverse_string(str+1);
printf("%c ",*(str-1));
}
int main()
{
char *str = "abcdef";
reverse_string(str);
return 0;
}*/
//使用可变参数列表模拟printf();函数
#include<stdio.h>
#include<stdarg.h>
void print(char *str, ...)
{
const char *p = NULL;
char ch;
char c;
va_list arg;//定义一个char 类型的指针
va_start(arg,str);
while(*str)
{
switch(*str)
{
case 's':
p = va_arg(arg,const char *);
while(*p)
{
putchar(*p);
p++;
}
++str;
break;
case 'c':
ch = va_arg(arg,char);
putchar(ch);
++str;
break;
case ' ':
++str;
break;
case '\n':
putchar('\n');
++str;
break;
default:
break;
}
}
va_end(arg);
}
int main()
{
print("s ccc \n","hello",'b','i','t');
//printf("%s","strstr");
return 0;
}