迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

举例: 1 1 2 3 5 8 13 21 ... 从第三个值开始,每个值都是前两个值的和   特征就是每次迭代的结果都可能作为后一次或者后几次迭代的输入值.

 

C# 实现,写一个函数迭代实现求第N个值是多少?

 1    /// <summary>
 2     /// 迭代
 3     /// </summary>
 4     class Iteration
 5     {
 6         /// <summary>
 7         /// 迭代 从第三个值开始每个值都是前两个值之和
 8         /// </summary>
 9         /// <param name="value1">第一个值</param>
10         /// <param name="value2">第二个值</param>
11         /// <param name="count">您想得到第几个值</param>
12         /// <returns></returns>
13         public static int iterate(int value1, int value2, int count)
14         {
15             if (count == 1)
16                 return value1;
17             else if (count == 2)
18                 return value2;
19             else if (count <= 0)
20                 count = 3;//如果count <=0 默认返回第三个数
21 
22             //第1次运算得到第3个值(count >=3),第2次运算得到第4个值
23             //获取第N个值只需迭代计算N-2次
24 
25             int currentVal = Iteration.iterate(value1, value2, 0, count - 2);
26 
27             return currentVal;
28         }
29 
30         /// <summary>
31         /// 迭代 从第三个值开始每个值都是前两个值之和
32         /// </summary>
33         /// <param name="a">前前值</param>
34         /// <param name="b">前值</param>
35         /// <param name="calculatedTimes">已运算次数</param>
36         /// <param name="count">需要运算的次数</param>
37         /// <returns></returns>
38         private static int iterate(int a, int b, int calculatedTimes, int count)
39         {
40             int preValue = b;
41             int currentVal = a + b;
42 
43             calculatedTimes++;
44             
         //如果迭代次数不够,递归继续迭代
            //将本次运算结果作为下一次迭代的输入参数 45 if (calculatedTimes < count) 46 { 47 currentVal = iterate(preValue, currentVal, calculatedTimes, count); 48 } 49 50 return currentVal; 51 } 52 }

 

posted on 2016-10-16 13:28  e路征途  阅读(378)  评论(0编辑  收藏  举报