递归算法c语言实例(C语言 用递归方法求X的n次方)

2025-03-14 12:40:02 0

递归算法c语言实例(C语言 用递归方法求X的n次方)

本文目录

C语言 用递归方法求X的n次方

#include《stdio.h》

int power(int x,int n)

{

if(n==0)

return 1;

elseif(n%2==1)

return x*power(x,n-1);

else{

int y=power(x,n/2);

return y*y;

}

}

int main()

{

int a,b,c;

printf(“enter x and n:“);

setvbuf(stdout,NULL,_IONBF,0);

scanf(“%d%d“,&a,&b);

c=power(a,b);

printf(“结果为%d“,c);

return 0;

}

扩展资料

#include《stdio.h》

double power(double x,int n);

main()

{

double x;

int n;

printf(“Input x,n:“);

scanf(“%lf,%d“,&x,&n);

printf(“%.2lf“,power(x,n));

}

double power(double x,int n)

{

double a=1.0;

int i;

for(i=1;i《=n;i++)

a*=x;

return a;

}

参考资料:百度百科 - 递归调用

C语言递归算法

本人学c++,c的语法已经淡忘了,但是递归不管什么语言都是一个原理其实简单一点来说就像数学里面的数列的通项公式:例如一个数列是2,4,6,8,10......很容易就可以得到通项公式是a+2 n是大于1的整数其实这就是一个递归的形式,只要你知道初始项的值,未知项和前几项之间的关系就可以知道整个数列。程序例子:比如你要得到第x项的值普通循环:for(int i=1; i《=n; i++) if (i == x) cout 《《 2*i; /*cout 相当于 c里面的printf,就是输出.*/递归:int a(int x) { if (x = 1) return 2; /* 第一项那肯定是2了,这个也是递归的终止条件! */ else return a(x-1)+2; /* 函数自身调用自身是递归的一个特色 */比如x=4,那么用数学表示就是a(4)=a(3)+2=(a(2)+2)+2=((a(1)+2)+2)+2其实递归方法最接近自然,也是最好思考的一个方法,难点就是把对象建模成递归形式,但是好多问题本身就是以递归形式出现的。普通递归就是数据结构上的堆栈,先进后出。例如上面x=4,把a(4)放入栈底,然后放入a(3),然后a(2),a(1),a(1)的值已知,出栈,a(1)=2,a(2)出栈a(2)=a(1)+2=2+2=4,a(3)出栈a(3)=a(2)+2=(a(1)+2)+2=6,a(4)出栈a(4)=a(3)+2=(a(2)+2)+2=((a(1)+2)+2)+2=8再比如楼上的阶乘例子,当n=0 或 1时,0!=1,1!=1,这个是阶乘的初始值,也是递归的终止条件。然后我们知道n!=n*(n-1)!,当n》1时,这样我们又有了递归形式,又可以以递归算法设计程序了。(楼上已给出谭老的程序,我就不写了)。我给出一种优化的递归算法---尾递归。从我给出的第一算法可以看出,先进栈再出栈,递归的效率是很低的。速度上完全比不上迭代(循环)。但是尾递归引入了一个新的函数参数,用这个新的函数参数来记录中间值.普通递归阶乘fac(x),就1个x而已,尾递归用2个参数fac(x,y),y存放阶乘值。所以谭老的程序就变成// zysable’s tail recursive algorithm of factorial.int fac(int x, int y) { if (x == 1) return y; else return fac(x-1, y*x);}int ff(int x) { if (x == 0) return 1; else return fac(x,1);}对于这个程序我们先看函数ff,函数ff其实是对fac的一个封装函数,纯粹是为了输入方便设计的,通过调用ff(x)来调用fac(x,1),这里常数1就是当x=1的时候阶乘值了,我通过走一遍当x=3时的值即为3!来说明一下。首先ff(3),x!=0,执行fac(3,1).第一次调用fac,x=3,y=1,x!=1,调用fac(x-1,y*x),新的x=2,y=3*1=3,这里可以看到,y已经累计了一次阶乘值了,然后x还是!=1,继续第三次调用fac(x-1,y*x),新的x=1,y=2*3=6,然后x=1了,返回y的值是6,也就是3!.你会发现这个递归更类似于迭代了。事实上我们用了y记录了普通递归时候,出栈的乘积,所以减少了出栈后的步骤,而且现在世界上很多程序员都在倡议用尾递归取消循环,因为有些在很多解释器上尾递归比迭代稍微效率一点.基本所有普通递归的问题都可以用尾递归来解决。一个问题以递归来解决重要的是你能抽象出问题的递归公式,只要递归公式有了,你就可以放心大胆的在程序中使用,另外一个重点就是递归的终止条件;其实这个终止条件也是包含在递归公式里面的,就是初始值的定义。英文叫define initial value. 用普通递归的时候不要刻意让自己去人工追踪程序,查看运行过程,有些时候你会发现你越看越不明白,只要递归公式转化成程序语言正确了,结果必然是正确的。学递归的初学者总是想用追踪程序运行来让自己来了解递归,结果越弄越糊涂。如果想很清楚的了解递归,有种计算机语言叫scheme,完全递归的语言,因为没有循环语句和赋值语句。但是国内人知道的很少,大部分知道是的lisp。好了,就给你说到这里了,希望你能学好递归。PS:递归不要滥用,否则程序极其无效率,要用也用尾递归。by 一名在美国的中国程序员zysable。

C语言迭代与递归比较(举例)

我举个例子:①斐波那契数列:1,1,2,3,5,8,13,21,34......迭代:int Fib;}递归:int Fib(int n){ if(n==0||n==1)return 1; else return (Fib(n-1)+Fib(n-2));}

c语言 设计一个递归算法

这哪是一个递归算法,这么多个: 给你设计其中一个:这是递归得到数组a【】的前k个元素的最大值 int max(int a,int k) { if(k==2)return(a》a?a:a); else return max(a,k-1)》a; } main() { int t, b={1,2,3,4,5,6,7,8}; t=max(b,8); printf(“%3d“,t); getch(); }

c语言,求递归算法的技巧最好有经典例子!

c语言中递归的最经典应用是求两个数的最小公约数,代码如下:int MinDivisor( int m, int n){ if(m%n==0) return n; else return MinDivisor(n, m%n);}

c语言算n的阶乘的递归算法

思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归。

参考代码:

#include《stdio.h》int fun(int n){ if(n==1||n==0) return 1;//如果参数是0或者1返回1 return n*fun(n-1);//否则返回n和下次递归的积}int main(){ int n; scanf(“%d“,&n); printf(“%d\n“,fun(n)); return 0;}/*5120*/

递归算法c语言实例(C语言 用递归方法求X的n次方)

本文编辑:admin

更多文章:


consideration翻译(consideration 在法律学中是什么意思)

consideration翻译(consideration 在法律学中是什么意思)

本文目录consideration 在法律学中是什么意思take into consideration是什么意思法律文书中consideration有几种译法consideration什么意思中文翻译Consideration在法律中是什么

2025年3月17日 21:00

手机发信息怎么样变成更多信息?微信里面的更多信息怎样修改

手机发信息怎么样变成更多信息?微信里面的更多信息怎样修改

本文目录手机发信息怎么样变成更多信息微信里面的更多信息怎样修改更多信息 用英语怎么说对方显示设置备注和标签 更多信息是什么意思微信的长信息怎么发送后缀是更多信息手机发信息怎么样变成更多信息群发。一、短信发送无需经过互联网,因而企业根本不用担

2025年4月3日 18:10

fastcgi(php中fastcgi和php-fpm是什么东西)

fastcgi(php中fastcgi和php-fpm是什么东西)

本文目录php中fastcgi和php-fpm是什么东西什么是FastCGIcgi/fastcgi占用率高如何通俗的解释cgi,fastcgi,php-fpm之间的关系php中fastcgi和php-fpm是什么东西首先要明白CGI是一个协

2025年2月12日 13:30

operation timed out(operation timed out什么意思)

operation timed out(operation timed out什么意思)

本文目录operation timed out什么意思开机时出现the operation timed out是怎么回事The operation timed out 什么意思The operation timed out是什么意思oper

2025年2月26日 14:20

tbody设置高度(HTML怎样让Table里的一个格子和同一行其他格子一样高)

tbody设置高度(HTML怎样让Table里的一个格子和同一行其他格子一样高)

本文目录HTML怎样让Table里的一个格子和同一行其他格子一样高html 怎么设置body的高度HTML怎样让Table里的一个格子和同一行其他格子一样高1:《td style= “white-space:nowrap;overflow

2025年3月21日 01:00

compensate翻译(英语vistors will be compensated怎么翻译)

compensate翻译(英语vistors will be compensated怎么翻译)

本文目录英语vistors will be compensated怎么翻译弥补的的英语翻译 弥补的用英语怎么说补偿差价 英文怎么说英语vistors will be compensated怎么翻译“Visitors will be comp

2025年2月10日 15:40

switch语句括号里面填什么(Java中,switch()括号中的参数是)

switch语句括号里面填什么(Java中,switch()括号中的参数是)

本文目录Java中,switch()括号中的参数是C++程序设计里switch语句怎么用呢,switch后面括号的内容是什么意思比如这个a%3.switch 语句中的后面里面有个小括号() 里面的东西有什么用的啊Java中,switch()

2025年2月27日 09:10

java基础实践教程(怎样学习java,java基础入门学习方)

java基础实践教程(怎样学习java,java基础入门学习方)

本文目录怎样学习java,java基础入门学习方刚开始学java,应该怎么入门请问Java的学习步骤怎样学习java,java基础入门学习方入门要一步一步完成,需要在途中为自己确立一个一个的目标来完成。下面为大家介绍一下,依照这样的目标完成

2025年3月30日 05:00

无刷电励磁电机(无刷电励磁电机是什么,无刷电励磁电机是什么知识)

无刷电励磁电机(无刷电励磁电机是什么,无刷电励磁电机是什么知识)

本文目录无刷电励磁电机是什么,无刷电励磁电机是什么知识无刷励磁机的工作原理无刷电励磁电机 有什么用无刷电励磁电机谁发明的无刷电机是哪国发明的无刷电励磁电机是什么,无刷电励磁电机是什么知识无刷就是没有碳刷,没有滑环跟碳刷的磨损更不需要更换。无

2025年4月2日 00:10

exactly造句(Sometimes的造句)

exactly造句(Sometimes的造句)

本文目录Sometimes的造句英语脱口而出是什么程度最近英语学习遇到isconstruedto造句exactly 是 什么意思exactly造句Sometimes的造句1、During the summer, my skin som

2025年3月23日 08:40

安卓安装包下载(如何下载旧版本的安卓软件啊)

安卓安装包下载(如何下载旧版本的安卓软件啊)

本文目录如何下载旧版本的安卓软件啊怎样安卓手机端下载安装如何下载旧版本的安卓软件啊“安卓系统手机下载软件方法有很多,为您提供以下几种方式,请您参考: 1.通过手机中“应用商店”搜索需要的软件并下载安装。 2.通过手机浏览器搜索需

2025年3月3日 05:40

java语言程序设计第四版(自学java编程有什么好的教程吗)

java语言程序设计第四版(自学java编程有什么好的教程吗)

本文目录自学java编程有什么好的教程吗自学Java,有哪些书籍推荐大学教材《java语言程序设计》哪个版本比较好自学java编程有什么好的教程吗JAVA入门就比较宽泛了,市面上很多书,推荐《JAVA大学教程》,外国大学的JAVA教程,翻译

2025年4月2日 15:20

学游戏开发难吗(游戏开发女生学习会不会太难了)

学游戏开发难吗(游戏开发女生学习会不会太难了)

本文目录游戏开发女生学习会不会太难了游戏开发学起来简单吗学游戏开发难吗要学多久游戏开发女生学习会不会太难了其实在IT行业中,无论你是敲代码的码农,还是找Bug的测试大佬,都需要极其缜密的思维,需要认真和细心。Unity游戏开发更是如此。在U

2025年3月9日 02:30

厦门旅游攻略四天三夜(2014厦门旅游攻略自助游四天三夜攻略)

厦门旅游攻略四天三夜(2014厦门旅游攻略自助游四天三夜攻略)

本文目录2014厦门旅游攻略自助游四天三夜攻略计划去厦门一次四天三夜的旅游~非国定假日~求推荐一份详细的厦门住宿攻略,最好能附带价格~~谢谢~~~厦门旅游攻略四天三夜,包括宾馆(最好是实惠点的,因为我是个学生),线路,去厦门三日游,自由行攻

2025年3月19日 01:30

水平垂直英文(英文上下左右分别用什么表示)

水平垂直英文(英文上下左右分别用什么表示)

本文目录英文上下左右分别用什么表示英语upright怎么翻译地道英语表达“水平照片”和“垂直照片” 也就是横向照片和纵向照片,分别用什么单词,英文上下左右分别用什么表示上:up ;下:down ;左:left ;右:right。1、up 英

2025年3月10日 08:20

婚纱摄影网站源码(如何“玩转“婚纱摄影行业线上营销)

婚纱摄影网站源码(如何“玩转“婚纱摄影行业线上营销)

本文目录如何“玩转“婚纱摄影行业线上营销求 类似厦门咔咔婚纱摄影 网站源码作为婚纱摄影企业,是否有必要开发小程序婚纱摄影小程序怎么做免费php婚庆网站源码做一个婚纱摄影类的APP需要多少钱有漂亮一点的在线客服系统吗婚纱摄影网站上要用如何“玩

2025年3月9日 16:30

occupation什么意思(occupations意思是)

occupation什么意思(occupations意思是)

本文目录occupations意思是employment、career、occupation、profession区别occupation啥意思,该怎样输入求大神:profession,occupation,vocation,trade的区

2025年2月24日 08:30

hercules(Hercules)

hercules(Hercules)

本文目录HerculesHercules是什么意思Hercules希腊&罗马神话英雄。。。希腊名是 赫拉克勒斯 这是罗马名,辞海上解作 赫丘利N年前,香港版的这个动画(Disney的,大家都知道啦)呢,就读作 “海格力斯”。。。。。也

2025年3月13日 10:00

jquery下拉菜单特效(用jquery怎样做一个有弹动效果的下拉菜单)

jquery下拉菜单特效(用jquery怎样做一个有弹动效果的下拉菜单)

本文目录用jquery怎样做一个有弹动效果的下拉菜单jquery实现html的控件select的缓慢下拉效果用jquery怎样做一个有弹动效果的下拉菜单/*样式*/*{margin:0;padding:0;}ul,li{list-style

2025年4月4日 13:50

fedora14(fedora14 可以在终端输入命令,但是鼠标点什么都没用)

fedora14(fedora14 可以在终端输入命令,但是鼠标点什么都没用)

本文目录fedora14 可以在终端输入命令,但是鼠标点什么都没用fedora14 怎样不用root登录怎样修改账户权限fedora14 可以在终端输入命令,但是鼠标点什么都没用鼠标移到左上角Activities(活动)那里,在那里面找Te

2025年3月19日 11:00

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索