迭代算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代算法相关的知识,希望对你有一定的参考价值。

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

举例: 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 }

 

以上是关于迭代算法的主要内容,如果未能解决你的问题,请参考以下文章

片段(Java) | 机试题+算法思路+考点+代码解析 2023

为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]

如何在Django视图中使用for循环返回每次迭代[关闭]

如何在UL中迭代使用appendChild和片段LI?

如何停止此代码的迭代我正在使用选择排序算法,如果数组已经排序,我希望迭代停止

递进迭代敏捷