迭代算法

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

举例: 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     }
时间: 2024-10-05 20:23:06

迭代算法的相关文章

ListSet_对半搜索的迭代算法

递归函数效率低, 常使用相应的迭代算法. mid, left, right均为元素下标, 如果当前表不为空, 则令x与l[mid]比较. 若两者相等, 则搜索成功. 若前者小于后者, 则继续查找左半部分, 否 则查找右半部分. 下标范围分别为[left, mid - 1], [mid + 1, right]. 如果当前搜索表为空表, 搜索失败返回NotPresent. 实现代码: #include "iostream" #include "cstdio" #incl

转载 迭代算法实现开平方

迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法(Iterative Method). 一般可以做如下定义:对于给定的线性方程组x=Bx+f(这里的x.B.f同为矩阵,任意线性方程组都可以变换成此形式),用公式x(k+1)=Bx(k)+f(括号中为上标,代表迭代k次得到的x,初始时k=0)逐步带入求近似解的方法称为迭代法(或称一阶定常迭代法).如果k趋向无穷大时limt(k)存在,记为x*,称此迭代法收敛.显

多线性方程组迭代算法——Jacobi迭代算法的Python实现

多线性方程(张量)组迭代算法的原理请看这里:若想看原理部分请留言,不方便公开分享 Gauss-Seidel迭代算法:多线性方程组迭代算法——Gauss-Seidel迭代算法的Python实现 import numpy as np import time 1.1 Jacobi迭代算法 def Jacobi_tensor_V2(A,b,Delta,m,n,M): start=time.perf_counter()#开始计时 find=0#用于标记是否在规定步数内收敛 X=np.ones(n)#迭代起

多线性方程组迭代算法——Gauss-Seidel迭代算法的Python实现

多线性方程组(张量)迭代算法的原理请看这里:原理部分请留言,不方便公开分享 Jacobi迭代算法里有详细注释:多线性方程组迭代算法——Jacobi迭代算法的Python实现 import numpy as np import time 1.1 Gauss-Seidel迭代算法 def GaussSeidel_tensor_V2(A,b,Delta,m,n,M): start=time.perf_counter() find=0 X=np.ones(n) d=np.ones(n) m1=m-1 m

不动点迭代算法

今天有个小朋友向我提出了一个「了不起」的问题. 一个有趣的现象 打开一个没有 Bug 的计算器,任意输入一个数值 \(x\),然后找到函数 \(sin(x)\) 或者 \(cos(x)\) ,连续点击这个函数若干次,你会发现一个有趣的现象:无论初始的 \(x\) 为多少,最后的值总是接近某一个数值(这些数值在某个精度范围内是相等的).\(sin(x)\) 最后总为 \(0\) ,\(cos(x)?\) 最后为 0.73 或者 0.99 (取决于你的计算器是否开启弧度制). 从数学的角度来看,实际

flink 实现ConnectedComponents 连通分量,增量迭代算法(Delta Iteration)实现详解

1.连通分量是什么? 首先需要了解什么是连通图.无向连通图.极大连通子图等概念,这些概念都来自数据结构-图,这里简单介绍一下. 下图是连通图和非连通图,都是无向的,这里不扩展有向图: 连通分量(connected component):无向图中的极大连通子图(maximal connected subgraph)称为原图的连通分量. 极大连通子图: 1.连通图只有一个极大连通子图,就是它本身.(是唯一的) 2.非连通图有多个极大连通子图.(非连通图的极大连通子图叫做连通分量,每个分量都是一个连通

递归算法与迭代算法的区别

举个例子:我想求1+2+3+4+..+100的值.迭代的做法:从1到100,顺着往下累加.1+2=3,3+3=6,6+4=10,10+5=15…… 程序表示, int i=1,sum=0; while(i<=100){ sum = sum +i; }递归的做法:我要求1到100的累加值,如果我已经得到1到99的累加值,将这个值加上100就是1到100的累加值:要得到1到99的累加值,如果已经得到1到98的累加值,将这个值加上99,就是1到99的累加值……最后我要得到1到2的累加值,我如果得到1自

迭代算法求平方根

#include<stdio.h>#include<math.h>void main() {      double a,x0,x1;    printf("input a:\n");    scanf("%lf",&a);    if(a<0)printf("ERROR!\n");    else     {          x0=a/2;         x1=(x0+a/x0)/2;        d

程序算法艺术与实践:递归策略之递归,循环与迭代

众所周知,递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的,同时影响效率的.递归是利用系统的堆栈保存函数当中的局部变量来解决问题的,而递归就是在栈处理栈上一堆的指针指向内存中的对象,这些对象一直不被释放,直到递归执行到最后一次后,才释放空间. 循环效率与递归效率 递归与循环是两种不同的解决问题的典型思路.当然也并不是说循环效率就一定比递归高,递归和循环是两码事,递归带有栈操作,循环则不一定,两个概念不是一个层次,不同场景做不同的尝试.