文档详情

[C语言演示课件]第9部分递归程序的设计.ppt

发布:2017-04-04约1.89万字共49页下载文档
文本预览下载声明
第九部分 递归程序设计技术 学习程序设计需要注意规律性的东西 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 本章内容 递归与循环 递归函数的执行过程 递归函数效率 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 循环与递归 循环程序 用于描述需要重复进行计算 高级语言里,也常见用递归来实现重复的计算。 递归—recursion, recursive algorithm 函数或过程调用自身 C语言允许递归,可以在函数内调用自身,常常使程序更简单清晰。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 1. 阶乘和乘幂 例:定义计算整数阶乘的函数 1×2×…×(n - 1)×n 本例中,乘的次数依赖于n,计算所需的次数定义时无法确定。 这是一种典型循环情况 计算“次数”依赖某些参数的值。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 程序 long fact1(long n) { long fac, i; for (fac = 1, i = 1; i = n; i++) fac *= i; return fac; } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 阶乘函数的精确定义 是一种递归定义的形式 要解决规模为n的问题,要先解决规模为n-1的子问题,依此类推。 如果高级语言允许递归定义函数,就可以直接翻译为程序。 C允许递归定义 在函数定义内直接或间接地调用被定义函数本身。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 写成递归函数 long fact (long n) { return n == 0 ? 1 : n * fact(n-1); } long fact(long n) { if (n = 1) return 1; return n * fact(n - 1); } Evaluation only. Created with Aspo
显示全部
相似文档