重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

递归函数编写c语言 函数的递归c语言

用C语言编写一个递归函数?

int findf( int n ){

创新互联公司2013年开创至今,先为绵竹等服务建站,绵竹等地企业,进行企业商务咨询服务。为绵竹企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

int a,b,c;

b = n % 2;

c = 0;

if ( n4){

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语言 编写递归函数

标个记号准备上传对大神的源码分析。好了,我分析了上楼大神的代码实现,具体参考他的代码,分享下。注:可以看看《算法精解》Kyle Loudon著  或者《数据结构》 主编 安训国 他们说的堆栈原理。

#include stdio.h

char* dg(char* instr, char* outstr, char* outstr2) 

{

if (*instr == 0) 

{

*outstr = 0;

return outstr2;

}

*(outstr + 1) = *instr;

outstr = dg(instr + 1, outstr + 2, outstr2);

/* 下两句一直不执行,直到outstr = dg(instr + 5, outstr + 10, outstr2)返回后才执行,其后不断执行后三句!*/

*outstr = *instr - 32;

return outstr + 2;

}

int main()

{

char buf[50];

dg("aybdx", buf, buf);

puts(buf);

return 0;

}

请用C语言编写递归函数

//循环实现

#includestdio.h

int main()

{

int n, t = 0;

scanf("%d", n);

if(n=0)return 0;

else

while(n){

t = t * 10 + n % 10;

n /= 10;

}

printf("%d", t);

return 0;

}

简单修改一下就可以变递归了。代码如下

#includestdio.h

int fanzhuan(int n,int t){

t = t * 10 + n % 10;

n /= 10;

if(n0)return fanzhuan(n,t);

return t;

}

int main()

{

int n, t = 0;

scanf("%d", n);

if(n=0)return 0;

else t=fanzhuan(n,t);

printf("%d", t);

return 0;

}

c语言递归函数

递归具体用法其实就是让你把一个问题分解成很多个类似的情况,虽然你要解决这个问题非常难,莫名其妙,要你想几年,但是把他一直递归分解,就变成很好理解的单种情况,而你整个问题又是跟这个单种情况类似,把整个问题通过递归调用一层一层分解到最低级简单的那种情况,就是你所需要理解的了。

一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

(引自谭浩强的C语言书里)

用递归法计算n!可用下述公式表示:

n!=1 (n=0,1)

n×(n-1)! (n1)

具体如下long ff(int n)

{

long f;

if(n0) printf("n0,input error");

else if(n==0||n==1) f=1;

else f=ff(n-1)*n;

return(f);

}

main()

{

int n;

long y;

printf("\ninput a inteager number:\n");

scanf("%d",n);

y=ff(n);

printf("%d!=%ld",n,y);

}

较难题:一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘,大的在下,小的在上。如图5.4所示。要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。

具体如下move(int n,int x,int y,int z)

{

if(n==1)

printf("%c--%c\n",x,z);

else

{

move(n-1,x,z,y);

printf("%c--%c\n",x,z);

move(n-1,y,x,z);

}

}

main()

{

int h;

printf("\ninput number:\n");

scanf("%d",h);

printf("the step to moving %2d diskes:\n",h);

move(h,'a','b','c');

}

从程序中可以看出,move函数是一个递归函数,它有四个形参n,x,y,z。n表示圆盘数,x,y,z分别表示三根针。move 函数的功能是把x上的n个圆盘移动到z上。当n==1时,直接把x上的圆盘移至z上,输出x→z。如n!=1则分为三步:递归调用move函数,把n-1个圆盘从x移到y;输出x→z;递归调用move函数,把n-1个圆盘从y移到z。在递归调用过程中n=n-1,故n的值逐次递减,最后n=1时,终止递归,逐层返回。当n=4 时程序运行的结果为:

关于递归函数(C语言的)

int search(int *array, int length, int target)

{

int count = 0;

if (array[length-1] == target) count =1;

if (length -1 0) count += search(array, length-1, target);

return count;

}


分享名称:递归函数编写c语言 函数的递归c语言
浏览地址:http://cqcxhl.cn/article/dodhoeh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP