当前位置:编程学习 > C#/ASP.NET >>

数据结构 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# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,