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!=1Console.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));}} }
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |