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的專欄