net 尾递归

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics.Tracing;
using System.Diagnostics;

//C# 中尽量用循环,F#中尽量用递归(为了32位和64位的兼容性)
//项目->属性->优化代码(generate tail calls)  选中!
//C#/32位或C#/Debug模式中JIT是不进行优化的
//C#/64位/Release是有JIT编译器进行尾递归优化的(非C#编译器优化)。
//http://www.cnblogs.com/mushroom/p/4311952.html

namespace 尾递归
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var st = FibonacciTailRecursive(2000000, 0, 1);
                Console.WriteLine(st);

            }
            catch (Exception ex)
            {
                var str = ex.Message;
                Console.WriteLine(str);
            }

            Console.Read();
        }
        private static int FibonacciTailRecursive(int n, int ret1, int ret2)
        {
            if (n == 0)
                return ret1;
            return FibonacciTailRecursive(n - 1, ret2, ret1 + ret2);
        }
    }
}

作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1