C#中的遍历、迭代、递归
算法的定义
有限的指令的序列
- 有穷性
- 确定性
- 可行性
遍历
遍历求水仙花数:“水仙花数”是指一种三位数,它的各位数字的立方和等于该数字本身。
public static void Main() { for(int i = 100;i < 1000;i++) { int tmpi = i; int a = tmpi % 10; tmpi /= 10; int b = tmpi % 10; tmpi /= 10; int c = tmpi; //Console.WriteLine(a + " " + b + " " + c); if (i == a * a * a + b * b * b + c * c * c) Console.WriteLine(i); } }
直接枚举个数、十位、百位更能体现遍历。
迭代
public static void Main() { int cnt = 0; // 迭代次数 double x1 = 2, x2 = 0; while(true) { x2 = x1 - (x1 * x1 * x1 - x1 - 1) / (3 * x1 * x1 - 1); // 迭代公式 if (Math.Abs(x2 - x1) > 0.000001) { x1 = x2; cnt++; } else break; } Console.WriteLine("方程的根:" + x1); Console.WriteLine("迭代次数:" + cnt); } }
递归
递归求阶乘
个性签名:时间会解决一切