c语言递归函数的例子
① c语言中的递归函数
当需要返回值时就return.程序因此不死循环。正不正确,运行一下通过就应该ok.
② c语言类函数递归调用的简单例子有哪些
=#include <stdio.h>
/// 求阶乘函数
/// 递归思想
/// n! = n * (n-1) * (n-2) * ... * 1
/// n! = n * [(n-1) * (n-2) * ... * 1]
/// n! = n * (n-1)! 递归方程
/// 这是递归实现
unsigned Factorial(unsigned int n)
{
if (n == 0) return 1; // 对于0的阶乘,当n=0时,递归返回
return n * Factorial(n-1); // 递归调用
}
void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}
③ 讲一下c语言中递归函数的使用方法
相当于循环,要有判断条件,传递进去的参数要变化,满足条件调用自身,不满足条件就开始一层一层返回。简单例子:
int
f(int
i){
int
sum=0;
if(i>0)
sum+=f(i-1);
return
sum;
}
main(){
int
a=10;
printf("%d",f(a));
}
④ c语言 函数递归调用的简单例子
举一个用递归调用函数求输入非负整数的阶乘的例子,如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intfact(intn){
if(n==1||n==0)return1;
elsereturnn*fact(n-1);
}
intmain(void){
intx;
while(1){
printf("Inputx(int12>=x>=0)... x=");
if(scanf("%d",&x),x>=0&&x<=12)//x>12时会使结果溢出
break;
printf("Error,redo:");
}
printf("%d!=%d ",x,fact(x));
return0;
}
⑤ C语言中自我递归的几个例子
递归主要元素:入口,递归和结束。在定义递归函数时将这三个元素考虑进去就行;如: double callnext(int n)
{
if(n>1) 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(n>1) 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+2+……+100的和
先分析一下。第一递归变量的问题,从题目上看应该取1,2,……,100这些变量的值作为递归的条件;第二就是如何终止的问题,从题目上看应该是当数为100的时候就不能往下加了。那么我们试着写一下程序。
int add(int);
main()
{
int num=1,sn;
sn=add(num);
printf("%d\n",sn);
getch();
}
int add(int num)
{
static int sn;
sn+=num;
if(num==100) return sn;
add(++num);
}
分析一下程序:前调用add(1),然后在子函数中把这个1加到sn上面。接着调用add(2),再把sn加2上来。这样一直到100,到了100的时候,先加上来,然后发现满足了if条件,这时返回sn的值,也就是1+2+……+100的值了。
⑦ c语言中,什么是函数的递归,能举个例子么
(PS:因为很多IT术语的定义都来源于国外,我们看的中文大部分是别人看了国外的文献然后以他的中文素养加以解释的!但是中华语言博大精深!而英语就较为简单了,记得上次看高德纳的《surreal number》时候,文中有一句“the beginning of the world”,而作者译为“万物初始”,从这里就可见一斑了!所以,对于一些不是很明白的IT术语,可以去看一下英文翻译,可能会对你有帮助)递归的英文是recursion,有循环的意思。
能够形成函数递归,该函数要有两个属性:
1.A simple base case (or cases), and
2.A set of rules which rece all other cases toward the base case.
For example, the following is a recursive definition of a person's ancestors:
One's parents are one's ancestors (base case).
The parents of one's ancestors are also one's ancestors (recursion step).
The Fibonacci sequence is a classic example of recursion:
Fib(0) is 0 [base case]
Fib(1) is 1 [base case]
For all integers n > 1: Fib(n) is (Fib(n-1) + Fib(n-2)) [recursive definition]
楼上的同志将递归的定义解释得已经很清楚了,但是你想要真正了解什么是函数递归,最好先了解什么是递归!然后对于函数递归就豁然开朗了!
⑧ c语言函数的递归调用
递归必须满足两个条件:1.初始条件;2.递归函数.举个例子,求阶乘:有f(1)=1;f(n)=n*f(n-1)(n≥2)现在你可以实现如下:long func(int n)//定义函数
{
long f,s=0;
if(n==1)f=1;
else
{
f=func(n-1)*n; //这里就是一个递归的过程,自身调用自身
s=s+f;
}
return s;
} 假设你现在是求3!执行过程就是:f(3)=f(2)*3;然后调用自身:f(2)=f(1)*2;在调用遇到初始条件:f(1)=1;则f(3)=1*2*3=6
⑨ 求C语言递归比迭代好的例子
汉诺塔问题,不用递归的话 还真的挺难
⑩ c语言递归函数
递归函数:
编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。
在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。
函数介绍:
在数理逻辑和计算机科学中,递归函数或μ-递归函数是一类从自然数到自然数的函数,它是在某种直觉意义上是"可计算的" 。事实上,在可计算性理论中证明了递归函数精确的是图灵机的可计算函数。递归函数有关于原始递归函数,并且它们的归纳定义(见下)建造在原始递归函数之上。但是,不是所有递归函数都是原始递归函数 — 最着名的这种函数是阿克曼函数。
其他等价的函数类是λ-递归函数和马尔可夫算法可计算的函数。
例子:
//代码1
void func()
{
//...
if(...)
func();
else
//...
}
条件:
一个含直接或间接调用本函数语句的函数被称之为递归函数,在上面的例子中能够看出,它必须满足以下两个条件:
1) 在每一次调用自己时,必须是(在某种意义上)更接近于解;
2) 必须有一个终止处理或计算的准则。
梵塔的递归函数:
//C
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}