递归和无参数列表

//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);
}*/
时间: 2024-08-25 05:43:34

递归和无参数列表的相关文章

C++中必须用参数列表初始化的4种情况

在C++中,必须使用构造函的参数列表来初始化成员变量的4种情况如下:(1)成员变量类型为 const int m_nData; class  test { private:    const int m_nData; public:    test():m_nData(120){} }; (2)类中有引用型变量  class  test  {   private:            int m_nData;      const int & m_nTest;   public:      t

C++11 —— 获取 tuple 参数列表中指定数据类型的索引位置

1. 问题背景 ??在 C++11 的标准中,我们可以通过 std::get< Index >(tuple) (以常量整数值为索引号)操作 tuple 中的参数,而到了 C++14 之后的标准,新增了 std::get< Type >(tuple) (以数据类型为索引)的方式操作 tuple 中的参数.那么,若只是在 C++11 标准中,是否有办法使用 以数据类型为索引 的方式操作 tuple 中的参数呢? 2. 解决办法 ??解决上面所提到的问题,其本质上,就是要解决 如何获取

浅谈无参数RCE[未完】

0x00 前言 这几天做了几道无参数RCE的题目,这里来总结一下,以后忘了也方便再捡起来. 首先先来解释一下什么是无参数RCE: 形式: if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { eval($_GET['code']);} preg_replace('/[a-z]+\((?R)?\)/', NULL, $code) pre_match('/et|na|nt|strlen|info|path||rand|d

java可变参数列表的实现

参数就是我们调用一个方法时需要传入得数据,在方法中可能需要参数协助处理数据或者对参数进行解析处理以达到我们希望得到的数据和结果. 平常我们在写一个方法时,我们能确定需要传入什么样的参数以及参数的个数,这样我们在实现这个方法的时候在确定参数的时候都会有明确的目标.但是有时候会有这种特殊情况,我们并不知道我们将要传入几个参数,或者说我们并不确定外部会传入多少参数.在这种情况下,我们就要用到可变参数列表.下面是可变参数方法的实现方法. 1.传入数组对象或者集合,这里只对传入数组对象进行简单说明,集合的

Scala可变参数列表,命名参数和参数缺省

重复参数 Scala在定义函数时允许指定最后一个参数可以重复(变长参数),从而允许函数调用者使用变长参数列表来调用该函数,Scala中使用“*”来指明该参数为重复参数.例如: scala> def echo (args: String *) = | for (arg <- args) println(arg) echo: (args: String*)Unit scala> echo() scala> echo ("One") One scala> ech

可变参数列表的实现

在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢? 让我们去看一下它的源代码: printf源代码: int printf(const char *fmt,...) { int res; va_list arg; va_start(arg,fmt); res = vprintf(fmt,arg); va_end(arg); return res; } 它采用的是可变参数列表,可变参数列表主要有以下两个缺点: 1

【C语言】求多个数中的最大值(可变参数列表)

求多个数中的最大值要求用可变参数列表: 代码如下: <span style="font-size:18px;">#include<stdio.h> #include<stdarg.h> int Max(int n,...) { int i=0; int max=0; va_list arg; va_start(arg,n); for(i=0;i<n;i++) { int val=va_arg(arg,int); if (val>max)

PHP函数可变参数列表的具体实现方法介绍

PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会北京站 课程视频发布 也许对于PHP初级程序员来说,对于PHP函数并不能完全熟练的掌握.我们今天为大家介绍的PHP函数可变参数列表的实现方法主要是利用func_get_args().func_num_args().func_get_arg()这三个系统函数来实现的,其中func_get_args()

C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?

我总是记不住构造函数的特点,关键还是没有领会那个哲学思想:父类的构造函数一方面要初始化它自己的成员数据,另一方面也要建立它自己的VMT呀!心里默念一百遍:一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VM