首先明确题目要求:递归函数,求n!
创新互联公司专注于海南企业网站建设,响应式网站,商城网站开发。海南网站建设公司,为海南等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
递归函数的含义:
编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。
n!表示阶乘函数,即1*2*3*……*n
下面给出代码:(C语言实现 )
比较简单的尾递归实现:
#includestdio.h
long digui(int n); //递归函数声明
int main()
{
int n;
scanf("%d",n);
printf("the result is %ld",digui(n)); //打印出递归值
return 0;
}
long digui(int n) //递归函数部分
{
if(n1)
return n*digui(n-1); //调用递归,让n与n-1相乘,直到n1时
return 1; //n1时,返回1,实现 n*(n-1)*(n-2)*……*3*2*1
}
这个是递归函数:
recursion(int x,int y)
{
if(y-1 == x)return x;
else return x+recursion(x+1);
}
使用的时候用另个函数调用。
递归主要元素:入口,递归和结束。在定义递归函数时将这三个元素考虑进去就行;如: double callnext(int n)
{
if(n1) return callnext(n-1)+3;
else return 1;
}
int main()
{
int m;
scanf("%d",m);
printf("result=%f",callnext(m));
return 0;
}
入口:callnext(m);递归:if(n1) return callnext(n-1)+3中的callnext(n-1);结束:else return 1;整个执行流程:callnext(m) 调用 callnext(m-1);callnext(m-1)调用callnext(m-1-1)。。。
callnext(2)调用callnext(1);callnext(1)=1;结束;
1、编写递归函数求 1+2+3+……+n 的和;
2、编写递归函数求 2*4*6*……*(2n) 的积;
3、编写递归函数求 n 的阶乘;
4、汉诺塔问题;
实际上很多问题都可以通过递归来实现,但是看到你的情况估计较难的你实现不了,所以给你几个简单的练习一下,这样可以增强对递归的理解,等理解的较为深入后再做稍微难一些的。
int abc(int a[],int n)
{
if(n==0)
return a[0];
else return a[n-1]*abc(a[],n-2);
}
或:
int ff(int a[],int n)
{
int sum=0;
int i
for(i=0;in;i++)
{
sum+=a[i];
}
return sum;
}
扩展资料:
数组类型说明 在C语言中使用数组必须先进行类型说明。
数组说明的一般形式为:类型说明符 数组名 [常量表达式],……; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
数组就是一次性定义相同数据类型的一组变量数组定义。
参考资料来源:百度百科-数组