精华内容
下载资源
问答
  • 递归法
    2021-05-25 07:27:02

    学知识,解决实际问题。

    (3)从简单问题出发,逐步增加难度,增强解决问题的能力。

    情感态度与价值观:

    (1)理解递归的意义,学会将大问题分解为小问题的思想方法。

    (2)在解决问题的过程中进一步培养和提升学生的分析、归纳、总结、解决问题的能力。

    (3)培养学生的主动探究分析解决问题的能力。

    四、教学重点与难点

    学习重点:

    掌握

    能针对具体问题找到递归出口、总结归纳出递归函数关系式。

    学习难点:

    正确高效的应用递归法分析、解决实际问题。

    五、教学策略

    情境教学法、分组讨论法、任务驱动法

    六、教学环境及资源准备

    教学环境:

    多媒体机房、因特网

    教学资源:

    课件、电子档案袋

    七、教学过程(可以用嵌套表格呈现具体内容)

    教学环节(第1学时)

    教师活动

    学生活动

    用时

    新课导入

    大屏幕展示一段视频:(问题1)有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大?

    (设计意图:利用学生的心理特性,激发学习兴趣,引出递归的概念,导入新课。)

    请同学简单描述求解过程。

    4

    问题分析

    引导学生回答问题

    (1)递归必须有终止条件,终止条件是什么?

    (2)列出问题1的递归关系式,age(n)函数如何定义?

    (3)举例说明,哪些实际问题适合使用递归方法解决?

    回答老师问题

    (1) 终止条件age(1)=10

    (2) 函数为:

    10 n=1

    age(n)=

    age(n-1)+2 n>1

    (3)求阶乘问题、猴子吃桃问题等。

    8

    算法设计

    递归调用过程可以分为:先不断调用(回推),再依次退回(递推)。

    上述递归调用过程表示如下:

    学生在word中画出函数的调用过程图,将其存储到电子档案袋中:

    5

    编程实现

    巡视教室,指导学生写出正确的程序,具体代码如下:

    Public class ages

    {

    Static int age(int n)

    { if (n==1)

    Return 10;

    Else

    Return n+2

    }

    Public static void main(String args[])

    { System.out.println(“age(5)=”+age(5);)

    }

    }

    学生尝试写出程序代码,不断的修改,调试,直到运行无误,将其存入电子档案袋“我的作品”中,并以定稿形式发布。递归法(参照课本129页,阶乘程序代码)

    8

    任务扩展

    布置任务,教材第133页“实践与思考”第1题

    教师给予指导。

    自主分析,确定递归函数关系式和递归出口,试着写出程序。递归法

    12

    讨论、总结

    1.学生通过分组讨论,回答下列问题:

    (1)符合什么条件的问题,适合使用递归法解决?

    (2)递归算法的设计步骤分为四个步骤?

    2.教师对学生回答,给予归纳、总结。

    8

    教学环节(第2学时)

    教师活动

    学生活动

    用时

    温故知新

    通过任务,回顾上节课知识:

    (问题2)斐波纳契(Fibonacci)函数问题。有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问第20个月兔子的总数是多少?

    学生填表,回答问题,教师巡查指导(见“关键环节提炼”)

    自主分析,完成下列问题:

    (1) 归纳出递归函数

    (2) 确定递归出口

    (3) 填写程序(关键环节提炼)

    12

    提出问题

    大屏幕展示梵塔图片,教师讲述梵塔故事的来历,以此引入新课。

    (设计意图:利用学生的心理特性,激发学习兴趣,引导学生自己动手解决问题,并帮助他们分析问题、归纳问题。)

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-25299-1.html

    更多相关内容
  • 今天整理了一下用递归法求最大公约数(gcd)和最小公倍数(lcm)。主要的工作是求最大公约数。数学上可以用辗转法求最大公约数
  • C语言递归法将整数转换为字符串
  • 递归法实现:用递归法计算Fibonacci(斐波拉契)数列的第n项。
  • 课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
  • 递归法

    千次阅读 2021-03-09 20:07:46
    它通常把一个大型的复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,递归方法只需要少量的程序就可以描述出多次重复计算的解题过程,大大减少了代码量。 递归的两个基本要素:     ...

    算法设计思想

    递归就是一个过程或函数在其定义中直接或间接调用自身的一种方法。它通常把一个大型的复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,递归方法只需要少量的程序就可以描述出多次重复计算的解题过程,大大减少了代码量。

    递归的两个基本要素:
        1、递归关系式:确定关系式,即原问题是如何分解为子问题的
        2、递归出口:确定递归到什么时候终止。


    典型例题

    一、母牛繁殖问题

    有一头母牛,它每年年初生一头小母牛,每头小母牛从第四年开始,每年也生一头小母牛,求到n年的时候,一共有多少母牛(不计死亡)

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int n = scanner.nextInt();
    		int cowNum = cow(n);
    		System.out.println(cowNum);
    
    	}
    
    	private static int cow(int n) {
    		if (n < 4)
    			return n;
    		else
    			return cow(n - 1) + cow(n - 3);
    	}
    
    }
    

    二、输出各位的数字

    任给一个十进制数字,从低位到高位输出每位数字。

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int n = scanner.nextInt();
    		digit(n);
    
    	}
    
    	private static void digit(int n) {
    		List<Integer> list = new ArrayList<Integer>();
    		while (n>0) {
    			int a=n%10;
    			list.add(a);
    			n=n/10;
    		}
    		for (int i = 0; i < list.size(); i++) {
    			System.out.print(list.get(i)+" ");
    		}
    	}
    }
    

    算法优化:利用递归方法。

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    public class Math_reverse {
    	
    	private static List<Integer> list = new ArrayList<Integer>();
    
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int n = scanner.nextInt();
    		List<Integer> digit = digit(n);
    		Collections.reverse(digit);
    		digit.forEach(System.out::print);
    	}
    
    	private static List<Integer> digit(int n) {
    		if (n < 10)
    			list.add(n);
    		else {
    			digit(n / 10);
    			list.add((n % 10));
    		}
    		return list;
    	}
    }
    

    三、汉若塔问题

    汉若塔问题:设A,B,C是三个塔座,在塔A上叠有n个圆盘,这些圆盘自上而下,由大到小的叠在一起。各圆盘从小到大编号为1,2,3···,n,现要求将塔座A上的这一叠圆盘移到塔座B上,每次移动一个,不能将大的放小的圆盘上。

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int n = scanner.nextInt();
    		char A, B, C;
    		hanoi(n, 'A', 'B', 'C');
    
    	}
    
    	private static void hanoi(int n, char A, char B, char C) {
    		if (n == 1) {
    			System.out.printf("Move disk %d from %c to %c\n", n, A, C);
    		} else {
    			hanoi(n - 1, A, C, B);
    			System.out.printf("Move disk %d from %c to %c\n", n, A, C);
    			hanoi(n - 1, B, A, C);
    		}
    	}
    
    }
    
    展开全文
  • Delphi绘图程序实例:绘制大树Tree节点,采用递归分形算法画一个树,点击一次画一次,画出支杆,代码有参考性。
  • 易语言递归法取排列组合例程(M选N递归法),源码可以学习到递归法
  • 主要介绍了java递归法求字符串逆序,涉及java递归调用的相关操作技巧,需要的朋友可以参考下
  • 这个是用递归法来写最大公约数,当然原算法还是欧几里得算法;只不过代码比较简洁
  • 主要为大家详细介绍了python递归法解决棋盘分割问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合...
  • 此代码展示了一种用递归解决迷宫问题的方法,可以自行输入迷宫即得到解答
  • 易语言递归法取排列组合例程源码,递归法取排列组合例程,子程序_取组合
  • 内容索引:C#源码,菜单窗体,树状菜单,递归法 用C#递归法实现的通用树状菜单,菜单数据来自数据库,运行于VS2005,编译通过,你可把它改进为你软件的一个模块,方便以后使用。
  • C语言初学者
  • 主要介绍了php递归法读取目录及文件的方法,是非常经典的递归算法,涉及php操作文件及目录的技巧,需要的朋友可以参考下
  • 2_crop5rp_求和_递归法_

    2021-10-04 08:29:10
    利用递归方法求5!,递归公式:fn=fn_1*4!
  • 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法...
  • 主要介绍了C语言之整数划分问题(递归法)实例代码的相关资料,需要的朋友可以参考下
  • 主要介绍了Python 实现递归法解决迷宫问题的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下
  • 主要介绍了Java求解两个非负整数最大公约数算法,结合实例形式分析了java求解最大公约数的实现方法,并附带了循环法与递归法算法思路,需要的朋友可以参考下
  • C语言 递归法求阶乘

    千次阅读 2020-08-30 18:18:05
    C语言 递归法求阶乘 利用一个函数进行递归求阶乘,但该数不能小于0,且若为0或1,得到的结果都为1,其他情况,对该数不断递归 #include <stdio.h> #include <stdlib.h> int main() { int fac(int n); /...

    C语言 递归法求阶乘

    利用一个函数进行递归求阶乘,但该数不能小于0,且若为0或1,得到的结果都为1,其他情况,对该数不断递归

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int fac(int n);              // 函数声明
    	int n;             //声明要阶乘的数为int型
    	int y;             //声明结果为int型
    	printf("Please input an integer numbers:");
    	scanf("%d",&n);              // 输入要阶乘的数
    	y=fac(n);
    	printf("%d!=%d\n",n,y);
    	system("pause");
    	return 0;
    }
    
    int fac(int n)                // 定义fac函数
    {
    	int f;
    	if(n<0)                     // n不能小于0
    		printf("n<0,data error!");
    	else if( n==0 || n==1)         // n=0 or n=1 ,阶乘都为1
    		f=1;
    	else f=fac(n-1)*n;           // n>1时,n!=n*(n-1)
    	return(f);
    }
    //递归法求阶乘
    
    展开全文
  • 递归法判断素数

    千次阅读 2021-10-12 09:34:01
    递归法判断素数

    递归法判断素数

    #include <stdio.h>
    int fun(int n,int i){
    	//相当于for循环的那一环节 
    	if(i == n-1){
    		return 1;
    	}
    	if(n%i == 0){
    		return 0;
    	}
    	fun(n,i+1);
    }
    int isprim(int n){ 
    	if(n<2){
    		return 0;
    	}
    	if(n==2 || n==3){
    		return 1;
    	}
    	return fun(n,2);
    } 
    
    int main(){
    	printf("%d",isprim(8));
    	return 0;
    }
    
    展开全文
  • 主要介绍了Java使用递归法解决汉诺塔问题的代码示例,汉诺塔问题是使用递归解决问题的经典范例,用到的算法非常简单,需要的朋友可以参考下
  • 内容索引:VC/C++源码,图形处理,递归,分形图形 VC++递归法实现简单分形图形示例程序,比如扣氏曲线类定义等。大家在C/C++学习时都会遇到递归,课本上以汗诺塔为例进行讲解,然后大家都希望自己找到一个递归的实例。...
  • 递归法求最大公约数

    2021-05-25 17:27:00
    牢记递归三步走大 从辗转相除举一反三,深入思考一下就是个递归过程…… #include <stdio.h> #include <stdlib.h> int fun(int a,int b){ if(a%b == 0){ return b; }else{ return fun(b,a%b);...
  • 翻转链表——递归法

    千次阅读 2022-01-26 15:33:42
    来看看实现翻转链表的第2种方法——递归法 这种方法更简洁一些,但是比较难于理解,可以借助下图: Solution: class Solution{ public ListNode reverseList(ListNode head){ if(head == null) || head-&...
  • 递归法求斐波那契数列.py

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,232
精华内容 106,092
关键字:

递归法

友情链接: Ybus.rar