C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少_C#教程

方法一:递归算法

/// <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;
}

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#
, 递归算法
, 规则
第30位数
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-14 20:56:38

C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少_C#教程的相关文章

Shell或命令行计算数组或文件的行数和列数

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1630920 (一)闲聊Linux Shell 编程 都说中国文化博大精深(例如汉字),但作为操作系统中的佼佼者,Linux虽然时间并不长,但同样也是博大精深.谁也不敢说自己已经熟练的掌握了Linux中所有的内容,除了知识点众多以外,快速的发展和更新使得Linux越来越强大,也使得Linux在短时间内越来越难掌握.所

Excel函数实现列数较少表格分栏打印

本文介绍如何利用Excel函数实现分栏打印,这个技巧适合打印列数比较少的Excel表格,避免出现大量空白. 平时偶尔需要打印一些列数特少的表格,例:单科成绩表.调资清单.施工员年检名单.产品代码表等等.以施工员年检名单来说就只有序号.姓名和证号3列.直接打印时由于3列表格远小于纸张宽度会出现大量空白,不仅难看也很浪费纸张.因此很有必要把表格分栏排满页面再打印,不过Excel并没有分栏功能,要如何实现分栏打印呢?其实在Excel 2007中用函数就可以轻松实现表格的分栏打印. 1.格式设置 用Ex

c++ 读取文件-c++读取文件时怎么读取行数和列数建立动态数组

问题描述 c++读取文件时怎么读取行数和列数建立动态数组 现有一个txt文件,里面全是数字,c++读取时怎么自动判断其行数和列数,并根据行数列数建立动态数组小白求解 解决方案 行数 是通过换行字符来进行判断列数 计算两个换行符之间的字符位置来得到 通过对文件内容的按字符遍历来实现统计的功能 解决方案二: 通过换行符确定行数,通过最长一行中的字符数确定列数 解决方案三: #include <sstream>#include <string>std::string line;std::

一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句

问题描述 一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句 用sql语句向ACCESS的一张表中添加数据,因为具体的列数还不清楚,所以想用循环一列一列向ACCESS表中插入数据,采用insert,为什么插入30行数据(即一列),当插第二列数据时就从第31行,第二列开始了(应该是第一行第二列开始).如果不用insert,用update那语句怎么写,一直出错. 解决方案 你的数据库表结构有问题.你应该把你的列作为行来插入.数据库中的表,列就应该是确定的. 解决方案二: 你

IntelliJ里面用GridLayoutManager,如何设置行数和列数啊?

问题描述 如题,是在图形用户界面下面进行UI设计,谢谢! 解决方案 解决方案二:查看API函数解决方案三:你创建GridLayout的时候就可以指定行数和列数啊newGridLayout(introws,intcols)比如newGridLayout(5,3)创建一个5行3列的布局

如何利用opencv实现在视频中每隔固定的n像素列数取一副图像?

问题描述 如何利用opencv实现在视频中每隔固定的n像素列数取一副图像? 在视频中,视频向前播放,视频画面每隔固定的像素列数n后,取当前的画面.各位大神有没有思路? 解决方案 视频不是以帧的形式播放的吗?那怎么实现你这种方法哦.除非你的n个列数就是一幅图像列数

qt4-linux QProcess 终端 输出结果列数不足

问题描述 linux QProcess 终端 输出结果列数不足 我在Linux下Qt通过QProcess调用外部程序,输出结果是按照标准终端80×24的结果 预计是linux终端问题,我如何配置终端使得结果按照120×40输出?(列×行) 或我该怎么改QProcess的stdout? 终端类型是LXTerminal,xterm:Qt4, Debain Linux 其QProcess的输出结果和第一幅图一样,我期望得到第二幅图的结果 解决方案 这个输出是外部进程输出的,如果你要求格式,可以把输出导

csv格式文件最大行数最大列数(各个excel版本)

excel  2003  =2^16 = 65 536   excel  2007  = 2^20 = 1048576 其实没有csv最大行数的限制,只是说excel打开的话,只能显示如上数据,多了就不显示. EXCEL 2003 最大列数是    256列(IV列)最大行数为65536行 EXCEL 2007 最大列数是16384列              最大行数为1048576行 csv文件,你可以使用记事本或者editplus或者notepad++打开,数据还是有的.csv文件就是一批

vc++编程问题-c++语言如何实现不同行有不同的列数

问题描述 c++语言如何实现不同行有不同的列数 比如第一行有4列,第二行只有1列.老师说这样做可以节省内存.如何做.求大神教教. 解决方案 给你个例子,可以用指针数组来实现: #include <iostream> using namespace std; int main () { // 定义一个指针数组 int *map[2]; // 第一行4列 map[0] = new int[4]; // 第二行2列 map[1] = new int[2]; // 分别赋值 for (int i=0;