递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.

递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.

        static void Main(string[] args)
        {
            //递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.
            int n = int.Parse(Console.ReadLine());
            int Number = GetNumber(n);
            int NumerSUM = GetNumberSUM(n);
            Console.WriteLine(Number);
            Console.WriteLine(NumerSUM);
            Console.Read();
        }

        public static int GetNumber(int n)
        {
            if (n == 1 || n == 2) return 1;
            else return GetNumber(n - 1) + GetNumber(n - 2);
        }

        public static int GetNumberSUM(int n)
        {
            if (n == 1)
                return 1;
            else if (n == 2)
                return 2;
            else
                return GetNumberSUM(n - 1) + GetNumber(n);
        }

  

原文地址:https://www.cnblogs.com/heyangyi/p/8799007.html

时间: 2024-10-12 17:39:26

递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.的相关文章

二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

1 typedef struct TreeNode *BinTree; 2 typedef BinTree Position; 3 struct TreeNode{ 4 ElementType Data; 5 BinTree Left; 6 BinTree Right; 7 }; 8 BinTree BT; 9 void InOrderTraversal(BinTree BT)//中序遍历非递归遍历算法(使用堆栈,用循环实现) 10 { 11 BinTree T=BT; 12 Stack S=C

二叉树,递归非递归遍历算法(全)

包含了所有的非递归和递归的算法: #include<iostream> #include<queue> #include<stack> using namespace std; //二叉树结点的描述 typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; //左右孩子 }BiTNode,*BiTree; //按先序遍历创建二叉树 //BiTree *CreateBiTree() //返回结

先序遍历的非递归遍历算法

先序遍历的非递归遍历算法: 1 void InOrderTraversal(BinTree BT) 2 { 3 BinTree T=BT; 4 stack S=CreatStack(MaxSize)://创建并初始化堆栈S 5 while(T || !IsEmpty(S)){ 6 While(T){//一直向左并将沿途节点压入堆栈 7 printf("%5d",T->Data);//(访问)打印节点 8 Push(S,T); 9 T=T->left; 10 } 11 if(

给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 &lt;把一个整数各个数位进行全排列&gt;

"""给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permutations() 方法实现import itertools def full_arrangement(num): my_str = '' my_list = [] permutation = list(itertools.permutations(str(num), len(str(num)))) for

第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON

关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的是f1的return,那么在这种情况下函数f1并未定义return,所以默认返回None 因此li的值应该是none 如果是 li = [11,22,33,44] def f1(arg): arg.append(55) f1(li) print(li) 因为函数传递的参数实际是参数的引用,因此在函数

《递归》算法设计一

什么是递归? 它有这样的特征,求解规模为N的问题时,设法将它分解成规模较小的问题,然后根据这些小问题方便的构造出大问题的解.当然程序必须有一个出口,当规模为1的时候,能直接的到解. 小结:就是把问题层层分解,直到程序的出口处. 注意事项 1.递归应有终止的时候,也就是每一个递归必须有一个出口,否则会无限递归出去. 2.递归就是调用自身的方法.例如f(n)=n*f(n-1) 裴波纳契数列 先观察下面一组数字有何规律呢 1.1.2.3.5.8.13.21.34-- 如果给你上面这些数字,估计能够很快

十一、函数递归,算法二分法,三元表达式,列表字典生成式,匿名函数,内置函数

一.函数递归: 函数的递归:函数在调用阶段直接或间接的又调用自身 递归分为两个阶段 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降 直到有一个最终的结束条件 2.递推:一次次往回推导的过程 3.递归函数在运行过程中一定要有出口,否则会无限循环下去 # 1.求4以内的和: def sum_numbers(num): if num == 1: return 1 return num + sum_numbers(num - 1) # 递归特点:函数内部自己调用

[算法]求满足要求的进制(辗转相除(欧几里得算法),求最大公约数gcd)

题目 3在十进制下满足若各位和能被3整除,则该数能被3整除. 5在十六进制下也满足此规律. 给定数字k,求多少进制(1e18进制范围内)下能满足此规律,找出一个即可,无则输出-1. 题解 写写画画能找到规律,即是求与k互质的数x,x进制下即能满足上述规律. 相关 求最大公约数:辗转相除法(又叫欧几里得算法) 欧几里德定理:gcd(a, b) = gcd(b , a mod b) ,对于正整数a.b. 其中a.b大小无所谓.当a值小于b值时,算法的下一次递归调用就能够将a和b的值交换过来. 代码

python小白-day4递归和算法基础

递归&算法基础 一.递归 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出. 1 2 3 4 5 6 7 8 def calc(n):     print(n)     if n/2>1:         r