0
点赞
收藏
分享

微信扫一扫

C#,斯特林数(Stirling Number)的算法与源代码

爱薇Ivy趣闻 2022-04-26 阅读 45
c#算法

在组合数学,斯特林数可指两类数,第一类斯特林数和第二类斯特林数,都是由18世纪数学家James Stirling提出的。它们自18世纪以来一直吸引许多数学家的兴趣,如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根(Copenhagen)大学的尼尔森(Niels Nielsen,1865-1931)提出了"Stirlingschen Zahlen erster Art" [第一类斯特林数]和"Stirlingschen Zahlen zweiter Art" [第二类斯特林数],首次把这两类数冠以「斯特林数」之名 。

更多知识课阅读百度百科:

百度百科《斯特林数》icon-default.png?t=M3K6https://baike.baidu.com/item/%E6%96%AF%E7%89%B9%E6%9E%97%E6%95%B0/4938529?fr=aladdin

计算结果:

 (一类斯特林数)源程序:

using System;

namespace Legalsoft.Truffer.Algorithm
{
	public static partial class Number_Sequence
	{
		private static long Factorial(int n)
		{
			if (n == 0)
			{
				return 1;
			}
			if (n < 0)
			{
				return -1;
			}
			long res = 1;
			for (int i = 2; i < (n + 1); i++)
			{
				res *= i;
			}
			return res;
		}

		private static int Combination(int n, int r)
		{
			if (r > n)
			{
				return -1;
			}
			if (n == r)
			{
				return 1;
			}
			if (r == 0)
			{
				return 1;
			}
			return Combination(n - 1, r - 1) + Combination(n - 1, r);
		}

		public static long Stirling_Number(int r, int n)
		{
			if (n > r)
			{
				return -1;
			}
			if (n == 0)
			{
				return 0;
			}
			if (r == n)
			{
				return 1;
			}
			if (n == 1)
			{
				return Factorial(r - 1);
			}
			if (r - n == 1)
			{
				return Combination(r, 2);
			}
			else
			{
				return Stirling_Number(r - 1, n - 1) + (r - 1) * Stirling_Number(r - 1, n);
			}
		}
	}
}

————————————————————

POWER BY TRUFFER.CN

举报

相关推荐

0 条评论