典型算法及应用——“递归法”探究
2009-07-19 16:18
232 查看
在起始条件已知的情况下,解决一类重复性问题的最佳方案莫过于使用程序设计的三大基本结构之一的“循环”结构(分为“有限次”和“无限次”循环两种情况)。然而现实生活中也存在这样一类问题——起始条件不明确,但结尾却已知;或者问题自身嵌套着自身。在这种情况下我们将采用反向思维,从结尾条件开始往前推演,直到把起始条件推算出为止。这样的一种算法往往被成为“递归”法。本章节将主要对此算法进行一系列的探究。
一、递归法的定义和数学模型:
递归法在数学上的表达函数有点特殊,它是一种自调用函数,形式如下:
Code
class Age
{
private int result = 0;
/// <summary>
/// 标识本次结果
/// </summary>
public int Result
{
get { return result; }
set { result = value; }
}
}
class Program
{
static int GetResult(int n)
{
int sumage = 0;
Stack<Age> ages = new Stack<Age>();
for (int i = n; i <= 4; ++i)
{
Age a = new Age();
if (i == 4)
{
a.Result = 10;
}
ages.Push(a);
}
while (ages.Count>0)
{
Age age = ages.Pop();
if (age.Result == 10)
{
sumage = 10;
}
else
{
age.Result = sumage + 1;
sumage = age.Result;
}
}
return sumage;
}
static void Main(string[] args)
{
Console.WriteLine(GetResult(1));
}
}
一、递归法的定义和数学模型:
递归法在数学上的表达函数有点特殊,它是一种自调用函数,形式如下:
Code
class Age
{
private int result = 0;
/// <summary>
/// 标识本次结果
/// </summary>
public int Result
{
get { return result; }
set { result = value; }
}
}
class Program
{
static int GetResult(int n)
{
int sumage = 0;
Stack<Age> ages = new Stack<Age>();
for (int i = n; i <= 4; ++i)
{
Age a = new Age();
if (i == 4)
{
a.Result = 10;
}
ages.Push(a);
}
while (ages.Count>0)
{
Age age = ages.Pop();
if (age.Result == 10)
{
sumage = 10;
}
else
{
age.Result = sumage + 1;
sumage = age.Result;
}
}
return sumage;
}
static void Main(string[] args)
{
Console.WriteLine(GetResult(1));
}
}
相关文章推荐
- 典型算法及应用——“递归法”探究
- 算法-分治法非常典型的应用之归并排序模拟与分析
- 机器学习----机器学习概述、机器学习的应用及典型相关算法
- 算法——算术表达式计算问题(堆栈典型应用)
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- Geohash的原理、算法和具体应用探究
- [PPT双屏版电脑抽奖系统下载]多进程现场抽奖展示系统V2-双屏PPT版-专业抽奖展示工具-强劲算法引擎[PPT+Excel双屏技术深度应用,国内唯一,Office集成技术的典型应用]
- 典型算法及应用——关于产生不重复随机数的算法
- 极限元算法专家:深度学习在语音生成问题上的典型应用 | 学术分享会总结文
- Geohash的原理、算法和具体应用探究(优秀)
- 典型算法与ACM题目解析(3)—记忆化搜索的应用
- Mark II功能点算法在web测试中的应用
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
- MP算法、OMP算法及其在人脸识别的应用
- 组合搜索(combinatorial search)在算法求解中的应用
- C语言之基本算法30—数组的灵活应用(一个正整数的各位数字平方和)
- 算法中的精确时间计数器的应用
- 删数问题(典型的贪心算法问题)
- 转载:数字图像去噪典型算法及matlab实现 (http://gaochaojs.blog.51cto.com/812546/243961)