1.编写一个函数实现n^k,使用递归实现
#include <stdio.h>
int main()
{
int fun(int n,int k);
int n;
int k;
int sum;
printf("input n,k:");
scanf("%d,%d",&n,&k);
sum=fun(n,k);
printf("%d^%d=%d\n",n,k,sum);
return 0;
}
int fun(int n,int k)
{
if(k==0)
return 1;
if(k>=1)
return(n*fun(n,k-1));
}
2.写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19.
#include <stdio.h>
int main()
{
int DigitSum(int n);
int n;
int sum;
printf("input n:");
scanf("%d",&n);
sum=DigitSum(n);
printf("sum=%d\n",sum);
return 0;
}
int DigitSum(int n)
{
int sum=0;
if(n<10)
return n;
if(n>=10)
return((n%10)+DigitSum(n/10));
}
3.编写一个函数reverse_string(char *string)递归实现
实现:将参数字符串中的字符反向排列。
#include <stdio.h>
void reverse_string(char * string)
{
if(*string)
reverse_string(string +1);
else
return;
putchar(*string);
}
int main(void)
{
char line[80];
printf("请输入一个字符串:");
gets(line);
reverse_string(line);
putchar('\n');
return 0;
}