Ⅰ c语言递归函数问题
#include<stdio.h>
intfun(intn){
intk;
if(n==1)k=10;
elsek=fun(n-1)+2;
returnk;
}
voidmain(){
printf("%d",fun(5));
}
Ⅱ C语言函数递归问题(含程序)
这是一个递归函数。
1.你如果输入的是2,那么在第一个age(2)里就会执行else语句,就是再调用age(2-1)==age(1),再age(1)里你知道是咋样吧,
2.然后age(1)就会传回10,你记得是age(2)里的else
c=age(n-1)+2调用的吧,返回的10就变成了c=10+2呸,如果你输入5啊啥的就回多激磁遮掩的步骤.
3.这个递归归函数的作用就是输入n,得到10+2*(n-1).
Ⅲ c语言中的递归函数
当需要返回值时就return.程序因此不死循环。正不正确,运行一下通过就应该ok.
Ⅳ 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);
}
}
Ⅳ C语言用递归函数函数求完成! 求大神!!
#include<stdio.h>
double getPower(double x,int y)
{
double f;
if(y<0)
return 0;
else if(y==0)
return 1;
else f=getPower(x,y-1)*x;
return f;
}
int main()
{
double x,sum;
int y;
scanf("%lf%d",&x,&y);
sum=getPower(x,y);
printf("%lf",sum);
return 0;
}
【答题不易,望采纳谢谢】
Ⅵ 如何使用C语言递归函数
递归:函数下一次的参数是函数自身上一次的输出值。(也就是说,函数的下一次取决于上一次的结果,自身依赖)。也正是因为如此,这样的函数必须有终止值(即递归必须有一个条件限定)。否则就会进入死循环。“递归”分成“直接递归”、“简介递归”。具体可以参考我的博客(点击, http://www.cnblogs.com/serviceboy/archive/2009/07/19/1526590.html,查看,有代码有具体示例解释)。 给出一个求n!的C递归:int Fun(int n){ if (n==0 || n==1) return 1; return Fun(n-1)*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语言递归函数的问题
通过分析这个代码,建立了如图的树。
1、当进去A时,num = 1;
2、接着往左进去B,num = 2;
3、往B左边及右边因为是NULL直接返回2处,再返回到1处;
4、接着往A右边C,此时num=3,这里把返回值C压入寄存器RAX,代码返回到A,但是最上层A处没有接收返回值,此时A退出,main函数从RAX取出返回值赋值给变量a。
这就是整个调用过程,这里返回值并不是最上层的返回值,是C的返回值,之所以能得到这个值是这个程序没有同步其它地方使用了RAX寄存器,它的值没有被修改。
Ⅸ 用C语言编写一个递归函数
int findf( int n ){
int a,b,c;
b = n % 2;
c = 0;
if ( n>4){
if (b==c){
a=findf( n-1 ) + findf( n-3 );
}
else{
a=findf( n-2 ) + findf( n-4 );
}
return a;
}
else if ( n < 0){
return -1;
}
else{
return 1;
}
}
Ⅹ C语言递归函数
P(X=k)=[n!/(k!(n-k)!]*p^k*(1-p)^(n-k)
=[(n-k+1)/k]*[p/(1-p)]*[n!/(k-1)!(n-k+1)!]*p^(k-1)*(1-p)^(n-k+1)
=[(n-k+1)/k]*[p/(1-p)]*P(X=k-1),
[(n-k+1)/k]*[p/(1-p)]>1时,即k<(n+1)p时,P(X=k)>P(X=k-1),k值较小时,P(X=k)随k的增大而增大,
[(n-k+1)/k]*[p/(1-p)]<1时,即k>(n+1)p时,P(X=k)<P(X=k-1),k值较大时,P(X=k)随k的增大而减小,
[(n-k+1)/k]*[p/(1-p)]=1时,即k=(n+1)p时,P(X=k)=P(X=k-1).(n+1)p为正整数时,有两个最大值。