当前位置:首页 » 编程语言 » 递归c语言例题

递归c语言例题

发布时间: 2022-08-30 21:22:21

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;结束;

Ⅱ 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语言求一些关于递归的练习题

1、编写递归函数求 1+2+3+……+n 的和;
2、编写递归函数求 2*4*6*……*(2n) 的积;
3、编写递归函数求 n 的阶乘;
4、汉诺塔问题;
实际上很多问题都可以通过递归来实现,但是看到你的情况估计较难的你实现不了,所以给你几个简单的练习一下,这样可以增强对递归的理解,等理解的较为深入后再做稍微难一些的。

Ⅳ c语言 递归的题目(求高人指点)

fun(int x)
{
printf("%d",x); //输出x
if(x/2>0)
fun(x/2-2); //递归调用fun(x/2-2)
}
这样就是20 8 2 -1
执行步骤

输出20
执行f(8)
输出8
执行f(2)
输出2
执行f(-1)
输出-1
条件不满足
退出

fun(int x)
{if(x/2>0)
fun(x/2-2); //递归调用f(x/2-2)
printf("%d",x); //输出x
}

执行步骤
调用f(20)未执行完
调用f(8)未执行完
调用f(2)未执行完
调用f(-1)
条件不满足
输出-1
f(-1)函数调用结束返回f(2)函数
输出2
f(2)函数调用结束返回f(8)函数
输出8
f(8)函数调用结束返回f(20)函数
输出20
f(20)函数调用结束返回main函数

至于递归函数的编译器实现方法就不详细说了
像1L说的画个图其实方法蛮好的

Ⅳ c语言题:用递归法求20个阶乘

#include"stdio.h"

doublejc(doublen)
{
if(n>1)
returnjc(n-1)*n;
else
return1;
}
intmain()
{
doublei;
for(i=0;i<=20;i++)
printf("%.0lf ",jc(i));
}
再给一个完全用递归的:
#include"stdio.h"

doublejc(doublem,doublen)
{
if(m>1)
{
if(n>1)
{
if(m==n)
printf("%.0lf ",jc(m,n-1)*n);
else
returnjc(m,n-1)*n;
}
else
{
if(m>0)
jc(m-1,m-1);
return1;
}
}
else
{
printf("1 ");
}
}
intmain()
{
doubles[20],m;
m=20;
jc(m,m);
}

Ⅵ 关于c语言递归调用的经典例题,求跪大神详解 !

这是汉诺塔吧。
原理:(总共n个盘子)

1、将第一个位置(起始位置)上的n-1个盘子移到第二个位置上,此时第一个位置只剩第n个盘子
2、将第一个位置上的最后一个盘子(第n个盘子)移到第三个位置(目标位置)上,再将第二个位置上的n-1个盘子移到第三个位置上。
你不需要晓得n-1个盘子如何从一个位置移到另一个位置,让程序做。n-->n-1-->n-2......1,问题不断的小化,当n=1时,直接从第一个位置移到第三个位置,再倒过来推1-->2-->3......-->n。最终问题就会被解决。

hanoi()函数就是将问题小化,使n-->1
move()函数中char x是起始位置,char y是目标位置,即x-->y.用A、B、C来显示盘子是如何移动的

热点内容
mc外国服务器地址名称 发布:2025-01-16 11:09:45 浏览:17
用脚本砍价 发布:2025-01-16 11:04:36 浏览:680
公司密码包括什么 发布:2025-01-16 11:04:04 浏览:544
php批量查询 发布:2025-01-16 10:43:38 浏览:917
适合搭建代理服务器的云 发布:2025-01-16 10:42:49 浏览:428
我的世界手机版服务器怎么注册 发布:2025-01-16 10:41:30 浏览:614
小米云电视服务器 发布:2025-01-16 10:37:03 浏览:350
php开源wiki 发布:2025-01-16 10:27:19 浏览:189
sql加字段备注 发布:2025-01-16 10:21:49 浏览:565
线割编程教程 发布:2025-01-16 10:21:03 浏览:18