零基础学C#算法(零基础学算法——C#版)

今天本人正在看算法方面的书。作为高中数学忘得差不多的渣渣,实在无力。无奈找了本书,c语言写的,哎。我就把其中代码翻译成C#版好了。此坑能否填平,看我耐性和网络支持条件吧。有生之年能看完的话我会把整个项目上传的。

 那就开坑吧。为了直观性舍弃代码规范性,所以如果有人不幸看到,不要吐槽,谢谢。

从第一章开始。

   public class _1_1看商品猜价格

零基础学C#算法(零基础学算法——C#版)
    {
         public void 看商品猜价格()
         {
             Console.WriteLine("设置商品真实价格");
             int 真正价格 = int.Parse(Console.ReadLine());
             Console.WriteLine("设置猜测价格");
             int 猜测价格 = int.Parse(Console.ReadLine());
             int 猜测次数 = 1;
             while (猜测价格 != 真正价格)
             {
                 猜测次数++;
                 Console.WriteLine("继续猜");
                 猜测价格 = int.Parse(Console.ReadLine());
             }
             Console.WriteLine("你猜了" + 猜测次数+"次才猜中");

             //Console.WriteLine("  ");
        }
     }
零基础学C#算法(零基础学算法——C#版)

 

   public class _1_2斐波那契数列

零基础学C#算法(零基础学算法——C#版)
    {
         public long i = 0;
         public void 计算斐波那契数列()
         {
             //1.3.2 顺推实例:斐波那契数列
            Console.WriteLine("设置N");
             long N = long.Parse(Console.ReadLine());

             tailrecursion(11, N);

             //long sum = 0;
            
//for (long i = 0; i <= N; i++)
            
//{
            
//    Console.WriteLine(i + " " + sum);
            
//    sum += 斐波那契数列(i);            
            
//
        }

         public void tailrecursion(long a, long b, long n)
         {
             if (n==0)
             {
                 return;
             }           
             i++;
             Console.WriteLine(i + " " + (a + b)); 
             tailrecursion(b,a+b, n - 1);
             n--;
         }

         public long 斐波那契数列(long n)
         {
             if (n <= 2)
             {
                 return 1;
             }
             else
             {
                 return 斐波那契数列(n - 1) + 斐波那契数列(n - 2);
             }     
         }


     }
零基础学C#算法(零基础学算法——C#版)

实现了2种 

网上那种 计算斐波那契数列的C#实现(注释的代码)完全是垃圾!垃圾的地方在于递归方法调用2次,在N越来越大的时候非常明显,而用尾递归(tailrecursion
的话飞速算完。不幸的原文用的就是我注释的那部分方法。

 

  class _1_3用逆推法求最初存钱数

零基础学C#算法(零基础学算法——C#版)
    {
        public void 求最初存钱数()
         {
             int 本息 = 1000;
             Double 年利率 = 0.0171;

             double[] 本利合计 =new double[49];
             int i;
             本利合计[48] = 本息;
             for ( i = 47;i > 0; i--)
             {
                 本利合计[i] = (本利合计[i + 1] + 本息) / (1 + 年利率/12);                  
             }
             for ( i = 48; i > 0; i--)
             {
                 Console.WriteLine(""+i+"月末本利合计:"+本利合计[i]);    
             }
            
         }       

     }
零基础学C#算法(零基础学算法——C#版)

 

   class _1_4用枚举法完成填数游戏

零基础学C#算法(零基础学算法——C#版)
    {
         public void 用枚举法完成填数游戏()
         {

             int i1, i2, i3, i4, i5;
             long multi, result;
             for (i1 = 1; i1 <= 9; i1++)
             {
                 for (i2 = 0; i2 <= 9; i2++)
                 {
                     for (i3 = 0; i3 <= 9; i3++)
                     {
                         for (i4 = 0; i4 <= 9; i4++)
                         {
                             for (i5 = 1; i5 <= 9; i5++)
                             {
                                 multi = i1 * 10000 + i2 * 1000 + i3 * 100 + i4 * 10 + i5;
                                 result = i5 * 111111;
                                 if (multi * i1 == result)
                                 {
                                     Console.WriteLine(i1 + "" + i2 + "" + i3 + "" + i4 + "" + i5);
                                     Console.WriteLine("X" + i1);
                                     Console.WriteLine("____________");
                                     Console.WriteLine(i5 + "" + i5 + "" + i5 + "" + i5 + "" + i5 + "" + i5);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
零基础学C#算法(零基础学算法——C#版)


DDD

零基础学C#算法(零基础学算法——C#版)

上一篇:Content-Type一览


下一篇:条款20 STL函数对象