递归和无参数列表

//1.使用可变参数列表实现任意个数求平均值。
/*
#include<stdio.h>
#include<stdarg.h>
int  average(int data,...)//可变参数列表  函数名(类型+形参名(几个参数),...)
{
	int sum=0;
	int i=0;
	va_list  avr;//avr可随意起va_list arg;
	va_start(avr,data);//va_start(arg,data);
	for(i=0;i<data;i++)
	{
		sum+=va_arg(avr,int);//va_arg(arg,int);
	}
	va_end(avr);//va_end(arg);
	return (float)sum/data;
}
int main()
{
	int  value=0;
	value=average(4,2,3,4,5);
    printf("平均数为:%d\n",value);
	return 0;
}*/
//2.使用可变参数列表实现print("s\tc\n","bit-tech",'w');
/*#include<stdio.h>
#include<stdarg.h>
void  print(char *p,...)
{
	char ch;
	va_list  arg;
	va_start(arg,p);
    while(*p!='\0')
	{
		ch=*p;
		if(ch=='s')
			puts(va_arg(arg,char *));
		else if(ch=='\t')
			putchar(ch);
        else if(ch=='c')
			putchar(va_arg(arg,char));
		else if(ch=='\n')
			putchar(ch);
		p++;
		
	}
	va_end(arg);
}
int main()
{
	print("s\tc\n","bit-tech",'w');
	return 0;
}*/
//3.编写递归函数,函数应该和下面的函数原型匹配:int hermite(int n, int x) Hn(x)={n<=0:1;n=1:2x;n>=2:2*x*Hn(n-1,x)-2*(n-1)*Hn(n-2,x);}
/*#include<stdio.h>
int  hermite(int n,int x)
{
	if(n<=0)
		return 1;
	else  if(n==1)
		return  2*x;
	else
		return  2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);
}
int main()
{
    int  n=0;
	int  x=0;
	int  ret=0;
    printf("请输入n和x的值");
    scanf("%d%d",&n,&x);
	ret=hermite(n,x);
	printf("ret=%d\n",ret);
	return 0;
}
*/
//4.编写一个函数实现n^k,使用递归实现
/*#include<stdio.h>
int sf(int n,int k)
{
	if(k==0)
		return 1;
	else 
	   if(k>0)
	   {
		k--;
	   	return n*sf(n,k);
	   }
}
int main()
{
	int n=0;
	int k=0;
	int ret=0;
	printf("请输入n和k的值\n");
    scanf("%d%d",&n,&k);
	ret=sf(n,k);
    printf("%d的%d次方 :%d\n",n,k,ret);
	return 0;
}*/
//5. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
/*#include<stdio.h>
int  DigitSum(int value)
{
	int sum=value%10;
    value/=10;
	if(value>0)
	{
	   sum+=DigitSum(value);
	}
	return sum;
}
int main()
{
	int value=0;
	int ret=0;
	printf("请输入一个非负整数");
	scanf("%d",&value);
	ret=DigitSum(value);
	printf("ret=%d\n",ret);
	return 0;
}*/
//6. 编写一个函数reverse_string(char * string)(递归实现)
//实现:将参数字符串中的字符反向排列。
//要求:不能使用C函数库中的字符串操作函数。
/*#include<stdio.h>
#include<string.h>
void reverse_string(char *s)
{
	if(*s!='\0')
	{
       int len=strlen(s);
	   char ch=s[0];
	   s[0]=s[len-1];
	   s[len-1]='\0';
	   reverse_string(s+1);
	   s[len-1]=ch;
	   }

}
int main()
{
   char  arr[20]="jxlzr";
   reverse_string(arr);
   printf("%s\n",arr);
}*/


你可能感兴趣的:(递归用法)