递归c语言例题
Ⅰ 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来显示盘子是如何移动的