递归函数c++简单实例(递归函数返回的是什么)
本篇文章给大家谈谈递归函数c++简单实例,以及递归函数返回的是什么对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
用C++语言编写程序,递归函数
1、在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。在编程语言中,把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。
2、递归函数是建立在嵌套的基础上的,只不过嵌套调用了自己本身,而且经常不是显式调用。一个含直接或间接调用本函数语句的函数被称之为递归函数,它必须满足以下两个条件:
1)在每一次调用自己时,必须是(在某种意义上)更接近于解;
2)必须有一个终止处理或计算的准则。
例如一个非法的递归(嵌套)调用:
void ff(){
ff();
}
int main()
{
ff();
system("pause");
return 0;
}
C++中什么是递归函数,一般用在什么地方
递归在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。
一般用在可以被简化成各个小问题的复杂大问题里。
斐波那契数列是典型的递归案例:Fib(0)= 0 [基本情况]Fib(1)= 1 [基本情况]对所有n> 1的整数:Fib(n)=(Fib(n-1)+ Fib(n-2)) [递归定义]
求用递归函数解决伪币问题的C++代码,编辑环境VC++6.0
/*
题目:81枚硬币中,有一枚假币且这枚假币比其它的轻。称四次把这枚硬币找出来。
算法
81=3^4
把所有的硬币分成数目相同的三份,把两份(x和y)放在天平上,如果重量不等,则假币在轻的一份里;如果重量相等,则假币在没称的那份里(z)。此时硬币总量变为1/3。依此循环,称三次后,剩三枚硬币,再称一次则可找出假币。
这个题适合于用递归来解决。递归的特点是:函数里面嵌套本函数。递归函数的执行分为两个环节:递推和回归:遇到本函数则递推;函数有了最终值时开始回归。
主函数中定义了重量为10的81枚硬币(其中第10枚为假币,重量为6)。递归函数weight(m,n)的参数m,n分别是当前所有硬币的序号的开始数和结束数(例如,称了第1次发现硬币可能在第1-27枚中,则m=1,n=27。)当m=n时,假币找到,函数开始回归。
*/
#include<stdio.h>
#define count 81
#define badcoin 10
int weight(int m,int n);
int a[count];
int main()
{
int i;
int t= 0;
for(i= 0;i<count;i++)
a[i]= 10;
a[badcoin]=6;
t= weight(1,count);
printf("the%dth coin is bad!\n",t);
return 0;
}
int weight(int m,int n)
{
int j=0;
int i=0;
int x=0;
int y=0;
int z=0;
if(m>=n)
return m;
for(i=0;i<(n-m+1)/3;i++,j++){
x+=(a[m+j]);
y+=(a[m+(n-m+1)/3+j]);
z+=(a[m+2*(n-m+1)/3+j]);
}
if(x==y){
m= m+2*(n-m+1)/3;
weight(m,n);
}
else if(x>y){
m= m+(n-m+1)/3;
n= m+(n-m+1)/2-1;
weight(m,n);
}
else{
n=m+(n-m+1)/3-1;
weight(m,n);
}
}
文章到此结束,如果本次分享的递归函数c++简单实例和递归函数返回的是什么的问题解决了您的问题,那么我们由衷的感到高兴!