C#求解阶乘(递归、非递归版本)+冒泡排序算法
2011-07-17 20:43
519 查看
class Test
{
public struct Stack
{
public int tag;
public int result;
};
private static int size=50;
private static Stack[] stack=new Stack[size]; //c++中,必须检验内存是否分配成功与否
//求阶乘,调用时候,不要传入非法参数
public static long fact(int n)
{
if (n <= 1) return 1;
else return n * fact(n - 1);
}
//非递归版本
public static long fact2(int n)
{
if(n<=1) return 1;
//>=2的阶乘
int i;
//初始化,相当于进栈
for (i = n; i >= 0;i-- )
{
stack[i].tag = i;
stack[i].result = 1; //初始化为1
}
stack[0].result = stack[1].result = 1;
i=2; //从2开始处理
do
{
stack[i].result = stack[i - 1].result * i;
i++; //退下一个
} while (i != n);
stack
.result = n * stack[n - 1].result; //最终结果
int tmp = stack
.result;
return tmp;
}
//冒泡排序
public static void BubbleSort(int[] a, int n)
{
int i,j,temp;
bool flag=false;
for(i=n-1;i>=0;i--)
{
flag=false;
for(j=0;j<i;j++)
{
if(a[j+1]<a[j])
{
temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;
flag=true;
}
}
if(flag==false) break;
}
} //end BubbleSort
} //end Test
{
public struct Stack
{
public int tag;
public int result;
};
private static int size=50;
private static Stack[] stack=new Stack[size]; //c++中,必须检验内存是否分配成功与否
//求阶乘,调用时候,不要传入非法参数
public static long fact(int n)
{
if (n <= 1) return 1;
else return n * fact(n - 1);
}
//非递归版本
public static long fact2(int n)
{
if(n<=1) return 1;
//>=2的阶乘
int i;
//初始化,相当于进栈
for (i = n; i >= 0;i-- )
{
stack[i].tag = i;
stack[i].result = 1; //初始化为1
}
stack[0].result = stack[1].result = 1;
i=2; //从2开始处理
do
{
stack[i].result = stack[i - 1].result * i;
i++; //退下一个
} while (i != n);
stack
.result = n * stack[n - 1].result; //最终结果
int tmp = stack
.result;
return tmp;
}
//冒泡排序
public static void BubbleSort(int[] a, int n)
{
int i,j,temp;
bool flag=false;
for(i=n-1;i>=0;i--)
{
flag=false;
for(j=0;j<i;j++)
{
if(a[j+1]<a[j])
{
temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;
flag=true;
}
}
if(flag==false) break;
}
} //end BubbleSort
} //end Test
相关文章推荐
- 第四周项目5-用递归方法求解(1)求n的阶乘
- 第4周项目5:用递归方法求解-求n的阶乘
- C# 实现阶乘(递归,非递归)
- c# 递归 求阶乘 实现二分查找
- 第12周项目3用递归方法求解(1求出n的阶乘)
- 第十二周项目三 用递归方法求解(n的阶乘)
- 第四周项目五-用递归方法求解(求n的阶乘)
- Python3基础 用 函数递归求解 一个数字的阶乘
- 第十二周项目-用递归方法求解-求出n的阶乘
- 第十二周项目三 用递归方法求解(1)求n的阶乘
- 汉诺塔递归实现 C#版本
- 第四周项目5:用递归方法求解(1)求n的阶乘
- 第十二周项目3-用递归方法求解(1)求出n的阶乘
- C#采用递归实现阶乘的方法
- C#递归求解八皇后
- C语言用递归方法求解阶乘
- 经典8皇后问题求解,C#2.0版本
- C#用递归求阶乘 n!
- C#递归求解楼梯问题优化方案
- C#递归求解Factorial数列