C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少
程序员文章站
2023-11-14 08:12:58
方法一:递归算法
///
/// 一列数的规则如下: 1、1、2、3、5、8、13、21、34求第30位数是多少, 用递归算法实...
方法一:递归算法
/// <summary> /// 一列数的规则如下: 1、1、2、3、5、8、13、21、34求第30位数是多少, 用递归算法实现。(c#语言) /// </summary> /// <param name="pos"></param> /// <returns></returns> public int getnumberatpos(int pos) { if(pos==0||pos==1) { return 1; } int res = getnumberatpos(pos - 1) + getnumberatpos(pos - 2); return res; }
方法二:不用递归
using system; using system.collections; using system.collections.generic; using system.text; namespace test { public class class1 { private arraylist list = new arraylist(); public class1() { } public class1(int num) : base() { int i; for (i = 1; i <= num; i++) { list.add(calculation(i)); } } private int calculation(int num) { if (num == 1 || num == 2) return 1; else return convert.toint32(list[num - 2]) + convert.toint32(list[num - 3]); } public int calculation() { return convert.toint32(list[list.count - 1]); } } public class test { public static void main() { int j; int num; for (j = 1; j < 100; j++) { console.writeline("你要计算第多少位:"); string readstr; readstr = console.readline(); if (!string.isnullorempty(readstr)) { if (int.tryparse(readstr, out num)) { if (num < 1) continue; else { class1 c1 = new class1(num); console.writeline(c1.calculation()); } } else { continue; } } else { break; } } } } }
方法三:用循环实现
public long getnumber(int pos) { long one = 1; long two = 1; if (pos == 0 || pos == 1) { return 1; } int i = 3; long sum = 1; while (i <= pos) { sum = one + two; one = two; two = sum; i++; } return sum; }
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持。