ylbtech-Arithmetic:Console-算法-递归算法示例 |
1.A,案例 |
-- ========================================================
-- ylb:算法
-- ylb:算法
-- type:递归算法
-- thankyou:sunshine, 谢谢你的默默付出
-- 10:50 2012-04-06
-- ========================================================
-- thankyou:sunshine, 谢谢你的默默付出
-- 10:50 2012-04-06
-- ========================================================
1.B,解决方案 |
1.B.1,阶乘
using System; namespace ConsoleApplication1 { class Program { /// <summary> /// ylb:阶乘 /// </summary> /// <param name="args"></param> static void Main(string[] args) { //7!=7*6*5*4*3*2*1 //n!=n*(n-1)! //结束 1!=1 Console.WriteLine("请输入一个大于0的整数"); int num = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(string.Format("这个整数{0}的阶乘为:{1}", num, fun(num))); } static int fun(int num) { if (num == 1) { return 1; } else { return num * fun(num - 1); } } } }
1.B.2,一个经典的递归试题(一列数的规则如下: 1、1、2、3、5、8、13、21、34...... )
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //一列数的规则如下: 1、1、2、3、5、8、13、21、34...... //求第30位数是多少, 用递归算法实现。 Console.WriteLine("请输入一个大于0的整数"); int num = 30; Console.WriteLine(string.Format("求第{0}位数是{1}", num, fun(num))); } static int fun(int num) { if (num <= 0) { return 0; } else if (num <= 2) { return 1; } else { return fun(num - 1) + fun(num - 2); } } } }
1.B.2.2,一个经典的递归试题(一列数的规则如下: 1、1、2、3、5、8、13、21、34...... )(常规方法解决)
using System; namespace ConsoleApplication1 { class Program { static int Fun(int i) { int sum=0; int temp=1; int temp2=1; if(i<=0) { sum=0; } else if(i<=2) { sum=1; } else { for(int j=3;j<=i;j++) { sum=temp+temp2; temp=temp2; temp2=sum; } } return sum; } /// <summary> /// ylb:常规方法解决(非递归) /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine(Fun(20)); } } }