导航:首页 > 源码编译 > 等差数列的递归算法

等差数列的递归算法

发布时间:2022-12-16 18:16:26

㈠ 求经典的递归算法以及案例(可用C#、PHP、JAVA其中一种语言来写)!

我用C#来写(注意,更多的请直接到我的个人博客,点击, http://www.cnblogs.com/serviceboy/archive/2009/07/19/1526590.html,收看) 【例1】有甲、乙、丙、丁四人,从甲开始到丁,一个比一个大1岁,已知丁10岁,问甲几岁?【分析】这是递归法的一道非常典型的题目——因为我们可以很显然知道:假设要计算甲的年龄,那么必须直到乙的年龄;同样,算乙的必须直到丙的,算丙的必须知道丁的,因为丁已知,自然可以往前推算了。现在假设有一个数学模型(函数)可以计算出他们各自的年龄(方便期间我们给他们编号——甲=1,乙=2,丙=3,丁=4),那么存在这一个F(X)函数,X表示某人的编号,其规律如下:F(1)=F(2)+1F(2)=F(3)+1F(3)=F(4)+1F(4)=10显然,直到X=4的时候是一个终止值,其余情况下都是返回F(X’),F(X’’)……F(X’’……’),且前者总是比后至大1,这也符合了X’和X总是呈现一定函数关系(设想一下,如果不是等差和等比,又怎么可能在一个递归函数中进行计算?要知道,函数本身就是一个公式表示,既然是公式,那么一定是一种函数关系Y=F(X)),此处显然X和X’的关系是X=X’+1。根据规律式,我们可以写出该递归函数:int AgeCal(int id)
{
if(id==4) return 10;
else
return (AgeCal(id+1)+1);
} 【例2】计算n!【分析】虽然这道题目不像例1一样清晰明了告诉你使用“递归”法反推,但是我们有这样一个常识——n!=(n-1)!*n;(n-1)!=(n-2)!*(n-1)……n=0或1,返回1.显然n与n-1,n-2也是线性的递减数列(等差关系)。其规律如下:F(n)=F(n-1)*nF(n-1)=F(n-2)*(n-1)F(n-2)=F(n-3)*(n-2)……F(1)=1或者F(0)=1(防止别人直接输入0)编写其递归函数,如下:int Fac(int n)
{
if(n==1 || n==0)
{
return 1;
}
else
return Fac(n-1)*n;
} 【例3】求一组整数中的最大(小)值(整数是一个int[]数组,个数未知)。【分析】当数字只有两个的时候,我们可以使用>和<直接比较;但是当数字超过2个的时候(假设3个),那么我们可以使用一个预订的函数(比如Max(1,2)和3进行比较),由于1,2两个数比较的时候已经得到一个最大值,因此在回代到Max中又变成了两个数的比较。这样,我们可以发现一个规律:F(1,2,3,4……n)=F(1,2,3,4……n-1)和n比较F(1,2,3,4……n-1)=F(1,2,3,4……n-2)和n-1比较……F(1,2,3)=F(1,2)和3比较F(1,2)=结果(并回代)相应的递归函数如下(C#):Code
int Max(int[]numbers)
{
if(numbers.Length==2)
{
return (numbers[0]>numbers[1]?numbers[0]:numbers[1]);
}
else
{
int[]tempnumbers=new int[numbers.Length-1];
for(int i=0;i<numbers.Length-1;++i)
{
tempnumbers[i]=numbers[i];
}
return (Max(tempnumbers)>numbers[numbers.Length-1]? Max(tempnumbers): numbers[numbers.Length-1]
}
}

㈡ 有关等差递增计算力的方法

比递增法、等差递增法是租赁业务中计算租金的两种方法。根据其基本公式进行推导和分析计算,可知按照等比递增法计付租金,则实际租金率下降,甚至是大幅度下降,使出租人的利益蒙受损失;按照等差递增法计付租金,则实际租金率总是等于名义租金率,而且计算简便。因此,等差递增法比等比递增法公平合理和实用 随着我国中学教学改革的不断深化, 《上海市中小学数学课程标准(试行稿)》提出:大力推进基于现代信息技术的数字化数学活动(DIMA),建立以计算机、计算器(包括科学计算器、函数型计算器和图形计算器)为支撑、拥有智能软件和丰富课件、联接信息网络的DIMA平台。利用该平台,改善数学内容的处理方式和呈现方式,让学生在信息技术环境下自主学习,进行实验、探索和研究。 在大力推进信息技术在教学过程中的普遍应用,促进信息技术与学科课程的整合的今天,我校也在实施课程改革,图形计算器也相应运用到了数学拓展课的课堂上。为此我们设计了“用图形计算器研究表示等差、等比数列的几种方法”的教学案例。 一、教学背景: 在《数列》这一章中在讲解等差数列与等比数列的概念时,内容比较简单,学生很容易掌握。它是后面学习数列的基础,有助于培养学生的观察能力、归纳总结能力。而等比数列与等差数列在内容上是完全平行的,包括定义、性质、通项公式、两个数的等比(差)中项等,因此在教学过程中可用类比方法,从而弄清它们之间的联系和区别。 高一学生经过半年多的图形计算器的使用学习,对用图形计算器分析、建构、探究数学问题有了初步的认识。从中他们深感图形计算器的使用不仅改变了他们学习数学的方法,而且提高了他们学习数学的兴趣。他们非常喜欢这种“做数学”的学习方式。 图形计算器有着众多的数列使用功能,如数列通项公式、递推公式的运用功能,数列图像以及图像追踪的功能,数列运算表的表达功能,数列的迭代功能以及数列的编程功能等。这些都为学好数列的基础知识,正确认识数列,使学生在有效的尝试猜想、合理归纳、简化运算、验证运算中,体验公式的认知过程,领会其中的数学思想方法,提高问题处理的能力等起到了很大的作用。 二.课例的设计理念 等差数列、等比数列两个常规数列是整个数列知识学习的核心。猜想、归纳、递归、类比等数学思想在这两个基础知识学习中有着充分的体现,可谓是“麻雀虽小,五脏俱全”。而这些,在传统数列教学中是很难全面、正确地表现出来。这会造成学生对所学知识的片面理解,对数列的后续学习带来负面影响。而图形计算器有着众多的数列使用功能,如数列通项公式、递推公式的运用功能,数列图像以及图像追踪的功能,数列运算表的表达功能,数列的迭代功能以及数列的编程功能等。这些都为学好数列的基础知识,正确认识数列,使学生在有效的尝试猜想、合理归纳、简化运算、验证运算中,体验公式的认知过程,领会其中的数学思想方法,提高问题处理的能力等起到了很大的作用。所以我们设想通过用图形计算器来研究数列、表示数列,让学生对这两个常规数列有一个清晰的认识,同时也想通过这样的学习过程,培养学生的主动探究精神,提高他们的数学学习能力。 设计与实施: 新教材的教学内容更注重函数思想与计算机技术的整合。本章内容从一开始,教材就将数列置于函数的背景下,给出定义:数列是以正整数集(或它的有限子集)为定义域的函数,当自变量按照从小到大的顺序依次取值时,所对应的一列函数值为数列的项。数列是一类离散函数。在习题的配备中教材也时时与函数教学类比。等差数列、等比数列的通项公式、递推公式、图像是我们这节课研究的主要内容,我们设想在图形计算器的帮助下,通过做数学的方法让学生对数列知识有一个生动、全面、正确的认识,从学习中,提高学生的数学思维能力,培养学生正确的数学观,真正提高学生对数学学习的兴趣。 案例一 ⑴ 求等差数列 -121,-110,-99,-88,… 的第11项 ⑵ 写出该数列的通项公式及递推公式 对于这个问题,其实根据其基本规律,就可以计算出结果。但是用图形计算器可以让我们从多个角度去思考问题的解决办法,有利于学生全面、正确了解等差数列的特性,从而简化计算。 方法一: 运用数值的迭代功能(如图①): ① 方法二:运用图形计算器的数组功能(如图②): ② 方法三

㈢ [C语言]已知等差数列0,2,4.分别用递推和递归算法求数列中第n项.

设0 为数列的第一项
递推:
int f1(int n)
{
int i,item = -2;
for (i = 1; i

㈣ 在等差数列{an}中a18=9,求a6

套用等差数列第N项公式“Am=An+(m-n)d”进行递归算法,得“a6=a18-(18-6)d=9-12d”得 a6=9-12d(d待定数值且默认为d=A2-A1)。

㈤ fortran 递归函数计算等差数列1+2+3+...+100的值。

过程是这样,但是结果应该不对,因为不能表示那么大的数

#include<stdio.h>

int fun(int n)
{
if(n == 1)
return 1;
else
return n * fun(n-1);
}

void main()
{
long sum = 0;
int i = 0;

for ( i = 1; i < 100; i++)
sum += fun(i);

printf("sum:%ld\n",sum);
}

㈥ 什么是递归算法

递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。
比如:
汉诺塔的递归算法:
void move(char x,char y){
printf("%c-->%c\n",x,y);
}

void hanoi(int n,char one,char two,char three){
/*将n个盘从one座借助two座,移到three座*/
if(n==1) move(one,three);
else{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}

main(){
int n;
printf("input the number of diskes:");
scanf("%d",&n);
printf("The step to moving %3d diskes:\n",n);
hanoi(n,'A','B','C');
}
我说下递归的理解方法
首先:对于递归这一类函数,你不要纠结于他是干什么的,只要知道他的一个模糊功能是什么就行,等于把他想象成一个能实现某项功能的黑盒子,而不去管它的内部操作先,好,我们来看下汉诺塔是怎么样解决的
首先按我上面说的把递归函数想象成某个功能的黑盒子,void hanoi(int n,char one,char two,char three); 这个递归函数的功能是:能将n个由小到大放置的小长方形从one 位置,经过two位置 移动到three位置。那么你的主程序要解决的问题是要将m个的"汉诺块"由A借助B移动到C,根据我们上面说的汉诺塔的功能,我相信傻子也知道在主函数中写道:hanoi(m,A,B,C)就能实现将m个块由A借助B码放到C,对吧?所以,mian函数里面有hanoi(m,'A','C','B');这个调用。
接下来我们看看要实现hannoi的这个功能,hannoi函数应该干些什么?
在hannoi函数里有这么三行
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
同样以黑盒子的思想看待他,要想把n个块由A经过B搬到C去,是不是可以分为上面三步呢?
这三部是:第一步将除了最后最长的那一块以外的n-1块由one位置经由three搬到two 也就是从A由C搬到B 然后把最下面最长那一块用move函数把他从A直接搬到C 完事后 第三步再次将刚刚的n-1块借助hannoi函数的功能从B由A搬回到C 这样的三步实习了n块由A经过B到C这样一个功能,同样你不用纠结于hanoi函数到底如何实现这个功能的,只要知道他有这么一个神奇的功能就行
最后:递归都有收尾的时候对吧,收尾就是当只有一块的时候汉诺塔怎么个玩法呢?很简单吧,直接把那一块有Amove到C我们就完成了,所以hanoni这个函数最后还要加上 if(n==1)move(one,three);(当只有一块时,直接有Amove到C位置就行)这么一个条件就能实现hanoin函数n>=1时将n个块由A经由B搬到C的完整功能了。
递归这个复杂的思想就是这样简单解决的,呵呵 不知道你看懂没?纯手打,希望能帮你理解递归
总结起来就是不要管递归的具体实现细节步骤,只要知道他的功能是什么,然后利用他自己的功能通过调用他自己去解决自己的功能(好绕口啊,日)最后加上一个极限情况的条件即可,比如上面说的1个的情况。

㈦ 用递归算法完成100+101+102.....+300的值,写出完整代码

100+300=400

101+299=400

102+298=400

100*400=40000

也可以看到是个等差数列,通项公式

阅读全文

与等差数列的递归算法相关的资料

热点内容
如何查看linux服务器的核心数 浏览:137
交易平台小程序源码下载 浏览:148
程序员记笔记用什么app免费的 浏览:646
java与单片机 浏览:897
服务器内网如何通过公网映射 浏览:478
程序员穿越到宋代 浏览:624
怎么使用云服务器挂游戏 浏览:618
真实的幸福pdf 浏览:344
d盘php调用c盘的mysql 浏览:266
怎么样搭建源码网站 浏览:429
新概念四册pdf 浏览:363
怎么下载悦虎检测app 浏览:530
cad表达式命令 浏览:200
程序员去一个小公司值不值得 浏览:848
程序员做个程序多少钱 浏览:497
win10原始解压软件 浏览:321
阿里程序员的老家 浏览:260
量子加密银行 浏览:195
命令方块获得指令手机 浏览:501
学习结束感言简短程序员 浏览:400