数据结构 C#语言版 第1章 绪论(2)
1.3 数学预备知识
集合(Set)是由一些确定的,彼此不同的成员(Member)或者元素(Element)构成的一个整体。成员取自一个更大的范围,称为基类型(Base Type)。集合中成员的个数称为集合的基数(Cardinality)。
集合的特性:
1) 确定性:任何一个对象都能被确切地判断是集合中的元素或不是。
2) 互异性:集合中的元素不能重复。
3) 无序性:集合中元素与顺序无关。
1.3.4 递归
一个算法直接调用自己或间接地调用自己,就称这个算法是递归的(Recursive)。根据调用方式不同,它分为直接递归(Direct Recursion)和间接递归(Indirect Recursion)。
递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时空开销。
factorial(阶乘) 函数:
C++ Codes:
[cpp] //Algri.h
#ifndef ALGRI_H
#define ALGRI_H
int factorial(int n);
#endif
//Algri.h
#ifndef ALGRI_H
#define ALGRI_H
int factorial(int n);
#endif[cpp] //Algri.cpp
#include "Algri.h"
#include "stdafx.h"
int factorial(int n)
{
if(n<=0)
return -1;
else if(n==1)
return 1;
else
return n*factorial(n-1);
}
//Algri.cpp
#include "Algri.h"
#include "stdafx.h"
int factorial(int n)
{
if(n<=0)
return -1;
else if(n==1)
return 1;
else
return n*factorial(n-1);
}
Python Codes:
[python] "Algri.py"
def factorial(n):
if n<=0:
return -1;
elif n==1:
return 1;
else:
return n*factorial(n-1);
"Algri.py"
def factorial(n):
if n<=0:
return -1;
elif n==1:
return 1;
else:
return n*factorial(n-1);[python] "Program.py"
from Algri import factorial
print factorial(10)
"Program.py"
from Algri import factorial
print factorial(10)C# codes:
[csharp] class Program
{
static void Main()
{
Console.WriteLine(Factorial(10));
}
static int Factorial(int n)
{
if (n <= 0)
return -1;
else if (n == 1)
return 1;
else
return n * Factorial(n - 1);
}
}
class Program
{
static void Main()
{
Console.WriteLine(Factorial(10));
}
static int Factorial(int n)
{
if (n <= 0)
return -1;
else if (n == 1)
return 1;
else
return n * Factorial(n - 1);
}
}
从.Net的角度看,所谓的集合可以定义为一种对象,这种对象提供了结构化组织任意对象的方式,并且实现一个或多个ICollection、IDictionary和System.Collections.IList接口。这一定义把System.Collections名称空间中的“内置”集合划分成了三种类别:
(1) 有序集合:仅仅实现ICollection接口的集合。例如Stack、Queue。
(2) 索引集合:实现IList的集合,其内容经由零开始的数字检索取出。例如ArrayList.
(3) 键式集合:实现IDictionary接口的集合。IDictionary集合的内容通常按键值方式存储。例如Hashtable类。
摘自 xufei96的专栏
补充:软件开发 , C# ,