第1章 绪论(2)

1.3 数学预备知识

集合(Set)是由一些确定的,彼此不同的成员(Member)或者元素(Element)构成的一个整体。成员取自一个更大的范围,称为基类型(Base Type)。集合中成员的个数称为集合的基数(Cardinality)。

集合的特性:

1) 确定性:任何一个对象都能被确切地判断是集合中的元素或不是。

2) 互异性:集合中的元素不能重复。

3) 无序性:集合中元素与顺序无关。

1.3.4 递归

一个算法直接调用自己或间接地调用自己,就称这个算法是递归的(Recursive)。根据调用方式不同,它分为直接递归(Direct Recursion)和间接递归(Indirect Recursion)。

递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时空开销。

factorial(阶乘) 函数:

C++ Codes:

//Algri.h
#ifndef ALGRI_H
#define ALGRI_H

int factorial(int n);

#endif
//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:

"Algri.py"
def factorial(n):
    if n<=0:
        return -1;
    elif n==1:
        return 1;
    else:
        return n*factorial(n-1);
"Program.py"
from Algri import factorial 

print factorial(10)
C# codes:

    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类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值