递归算法实验报告doc

合集下载

算法设计与分析:递归与分治法-实验报告(总8页)

算法设计与分析:递归与分治法-实验报告(总8页)

算法设计与分析:递归与分治法-实验报告(总8页)实验目的:掌握递归与分治法的基本思想和应用,学会设计和实现递归算法和分治算法,能够分析和评价算法的时间复杂度和空间复杂度。

实验内容:1.递归算法的设计与实现3.算法的时间复杂度和空间复杂度分析实验步骤:1)递归定义:一个函数或过程,在其定义或实现中,直接或间接地调用自身的方法,被成为递归。

递归算法是一种控制结构,它包含了解决问题的基础情境,也包含了递归处理的情境。

2)递归特点:递归算法具有以下特点:①依赖于递归问题的部分解被划分为若干较小的部分。

②问题的规模可以通过递推式递减,最终递归终止。

③当问题的规模足够小时,可以直接求解。

3)递归实现步骤:①确定函数的定义②确定递归终止条件③确定递归调用的过程4)经典实例:斐波那契数列递推式:f(n) = f(n-1) + f(n-2)int fib(int n) {if (n <= 0)return 0;else}5)优化递归算法:避免重复计算例如,上述斐波那契数列的递归算法会重复计算一些中间结果,影响效率。

可以使用动态规划技术,将算法改为非递归形式。

int f1 = 0, f2 = 1;for (int i = 2; i <= n; i++) {f1 = f2;使用循环避免递归,重复计算可以大大减少,提高效率。

1)分治算法的定义:将原问题分解成若干个规模较小且类似的子问题,递归求解子问题,然后合并各子问题得到原问题的解。

2)分治算法流程:②将问题分解成若干个规模较小的子问题。

③递归地解决各子问题。

④将各子问题的解合并成原问题的解。

3)分治算法实例:归并排序归并排序是一种基于分治思想的经典排序算法。

排序流程:②分别对各子数组递归进行归并排序。

③将已经排序好的各子数组合并成最终的排序结果。

实现源代码:void mergeSort(int* arr, int left, int right) {if (left >= right)while (i <= mid && j <= right)temp[k++] = arr[i] < arr[j] ? arr[i++] : arr[j++];temp[k++] = arr[i++];1) 时间复杂度的概念:指完成算法所需的计算次数或操作次数。

实验5 递归及队列

实验5 递归及队列

实验报告五递归及队列一、实验目的:(1)掌握递归的基本思想。

(2)掌握链式队列及循环队列的基本操作算法。

(3)应用队列先进先出的特点,解决一些实际问题。

二、实验内容:1、 p(a-b,b)+1 当a>=bp(a,b)= 其中a,b为正整数。

0 当a<b利用递归设计此函数。

#include<iostream.h>int p(int a,int b){if(a<b)return 0;elsereturn p(a-b,b)+1;}void main(){int x;x=p(6,2);cout<<"结果为: "<<x<<endl;int y;y=p(3,4);cout<<"结果为: "<<y<<endl;}粘贴测试数据及运行结果:2、Ackerman函数如下:n+1 当m=0akm(m,n)= akm(m-1,1) 当m≠0,n=0akm(m-1,akm(m,n-1)) 其它情形利用递归设计此函数。

试求akm(1,2),akm(2,1)?粘贴#include<iostream.h>int akm(int m,int n){if(m==0)return n+1;if(m && !n)return akm(m-1,1);else{return akm(m-1,akm(m,n-1));}}void main(){int s,t,l;s=akm(0,8);cout<<"结果为: "<<s<<endl;t=akm(1,2);cout<<"结果为: "<<t<<endl;l=akm(2,1);cout<<"结果为: "<<l<<endl;}测试数据及运行结果:3、循环队列的实现(请采用模板类及模板函数实现)[实现提示]函数、类名称等可自定义,部分变量请加上学号后3位。

递归实验报告分析总结

递归实验报告分析总结

递归实验报告分析总结递归是一种非常重要的编程思想和技巧,对于理解和解决问题具有非常大的帮助。

通过递归,我们可以将一个问题分解成为更小的子问题,从而简化问题的复杂度和难度。

在本次实验中,我深入学习了递归的原理和应用,并实践了一些递归算法。

通过这些实验,我对递归有了更深入和全面的理解,掌握了递归的使用方法和注意事项。

在实验中,我首先学习了递归的概念和原理。

递归是一种将大问题分解成小问题的算法思想,通过不断调用自己来解决问题。

递归算法通常包含两个部分:基本情况和递归情况。

基本情况是递归终止的条件,递归情况是递归调用自身的条件。

通过合理设置这两个条件,我们可以确保递归算法能够得到正确的结果并正常终止。

然后,我练习了递归的应用。

在实验中,我实现了一些常见的递归算法,如计算阶乘、斐波那契数列等。

通过这些实践,我更加熟悉了递归的写法和思维模式。

递归算法的核心思想是将大问题分解成小问题,然后通过递归调用解决这些小问题,最终得到整个问题的解。

这种思维模式非常灵活和高效,对于解决一些复杂和抽象的问题非常有帮助。

在实验过程中,我也遇到了一些递归算法的常见问题和注意事项。

例如,递归算法容易出现堆栈溢出的问题,因为每次递归调用都会占用一定的内存空间,如果递归层数过多,就容易导致栈溢出。

为了解决这个问题,我们可以在递归算法中加入递归深度的限制条件,或者考虑使用迭代算法等其他算法思想。

此外,递归算法的时间复杂度一般比较高,因为递归算法需要不断的调用自身,导致函数的调用次数非常多。

为了提高递归算法的效率,我们可以尝试使用尾递归优化、记忆化搜索等技巧。

尾递归优化是指在递归函数的最后一步调用中,直接返回递归函数的结果,而不再进行其他操作。

这样可以有效避免函数调用的堆栈积累,提高程序的性能。

总的来说,通过本次递归实验,我对递归算法有了更深入的理解和掌握。

递归是一种非常强大和灵活的算法思想,可以用来解决各种复杂的问题。

通过合理设置递归的基本情况和递归情况,我们可以通过递归算法简化问题的复杂度和难度,高效地解决问题。

递归算法的实验报告

递归算法的实验报告

递归算法的实验报告引言递归算法是计算机科学中一种重要的算法思想,通过将问题分解为更小的子问题并逐步解决,从而实现问题的求解。

本实验旨在探讨递归算法的原理,并通过具体例子来说明递归算法的应用。

算法原理1.递归定义:递归算法通过将问题分解为规模更小的子问题来解决。

通常,递归算法会有一个或多个基准情况,当问题的规模达到基准情况时,递归调用将停止。

2.递归调用:在递归算法中,函数会调用自身来解决规模更小的子问题。

通过递归调用,问题的规模逐步缩小,直到达到基准情况。

3.递归终止条件:递归算法必须定义一个或多个递归终止条件,当满足这些条件时,递归调用将停止。

实验步骤为了更好地理解递归算法的应用,我们选取了斐波那契数列作为示例,并通过递归算法计算斐波那契数列的第n项。

1.确定递归终止条件:斐波那契数列的第0项和第1项为预定义的基准情况,所以递归终止条件为n=0或n=1。

2.实现递归算法:创建一个递归函数fibonacci(n),用于计算斐波那契数列的第n项。

3.处理递归调用:在递归函数中,当n大于1时,调用fibonacci(n-1)和fibonacci(n-2)来计算第n-1项和第n-2项,并将它们相加得到第n项的值。

4.返回计算结果:将计算得到的结果返回给调用者。

实验结果通过上述步骤,我们成功实现了递归算法来计算斐波那契数列的第n项。

以下是一些示例结果:•当n=0时,第0项为0。

•当n=1时,第1项为1。

•当n=2时,第2项为1。

•当n=3时,第3项为2。

•当n=4时,第4项为3。

我们还可以通过增大n的值来计算更多项的斐波那契数列。

实验总结通过本次实验,我们深入了解了递归算法的原理和应用。

递归算法通过将问题分解为更小的子问题,从而解决复杂的计算任务。

然而,递归算法也存在一些缺点,如效率较低和可能出现栈溢出的风险。

因此,在实际应用中需要谨慎使用递归算法,并针对具体问题选择合适的算法思想。

希望通过本次实验,读者对递归算法有了更深入的理解,并能够灵活运用递归算法解决实际问题。

实验2 递归算法实验

实验2 递归算法实验

实验2 递归算法实验
实验内容
1. 使用递归编写一个程序,求以下数列的前n 项之和:
n
s 1...61514131211++-+-+-=
时,结果为 55 当n=15时,结果为 610 。

2. 编写一个程序,使用递归算法输出一个一维字符数组中所有字符的全排列,假设字符都不一样,例如{'a','b','c'}的全排列为(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)。

3. 编写一个程序,使用递归函数计算一个正整数中所有数字之和,例如输入234,输出9。

4*. 编写一个递归函数,返回一个字符串中大写字母的数目。

源代码:
说明:
(1) 编程语言不限,建议使用Java、C++或者C语言。

(2) 需要将程序源代码复制并粘贴到每道题之后的方框中(部分题需要填写输出结果)。

(3) 在提交实验报告时,先关闭所有文件,再将文件名改为“学号-2.doc”,上传到“13级计算机班/算法分析与设计”文件夹中的“实验2”子文件夹中。

(4) 标注“*”号的题为选做题,其他题为必做题。

算法设计及实验报告.doc

算法设计及实验报告.doc

算法设计及实验报告算法设计及实验报告实验报告1 递归算法一、实验目的掌握递归算法的基本思想;掌握该算法的时间复杂度分析;二、实验环境电脑一台,Turbo C 运行环境三、实验内容、步骤和结果分析以下是四个递归算法的应用例子用C语言实现 1. 阶乘main {int i,k; scanf“d\n“, k factoriali; printf“d\n“,k; } int factorialint n { int s; ifn0 s1; else sn*factorialn-1; //执行n-1次return s; } 阶乘的递归式很快,是个线性时间,因此在最坏情况下时间复杂度为On。

2. Fibonacci 数列main {int i,m; scanf“d\n“, mfbi; printf“d“,m; } int fbint n {int s; ifn define const 8 main {int a[]{0,1,2,3,4,5,6,7,8,9}; int nsizeofa; int s; sBinSearcha,const,n; pr intf“suo cha de shu shi di d ge“,s; } BinSearchint a[],int x,int n {int left,right,middle0; left0;rightn-1; whlielefta[middle] leftmiddle1; else rightmiddle-1; } return -1; } 二分搜索算法利用了元素间的次序关系,采用分治策略,由上程序可知,每执行一次while循环,数组大小减少一半,因此在最坏情况下,while循环被执行了O(logn)次。

而循环体内部只需运算O(1)的时间,因此该算法在最坏情况下的时间复杂度为O(logn1),即O(logn)。

4. 合并排序(分治法)MergeSortint low,int high,int*array { int middlehighlow/2; //将数组划分为2分iflow1;i-- { jMaxw[i]-1w[1] { kc-w[1]; m[1][c]m[2][c]m[2][k]v[1]m[2][c]m[2][k]v[1];} } void Tracebackint m[6][N],int w[],int c,int n,int x[] { int i; fori1;i2n 时,算法需要Ωn2n计算时间。

递归实验报告分析总结

递归实验报告分析总结

一、实验背景递归是一种编程技巧,通过函数自身调用自身的方式实现算法的求解。

递归算法在解决一些具有递归特性的问题上具有独特的优势,如斐波那契数列、汉诺塔等。

本实验旨在通过递归算法解决实际问题,加深对递归的理解和应用。

二、实验目的1. 掌握递归算法的基本思想和方法;2. 熟悉递归算法的编写和调试;3. 分析递归算法的时间复杂度和空间复杂度;4. 学会运用递归算法解决实际问题。

三、实验内容1. 斐波那契数列求解2. 汉诺塔问题3. 递归求解组合问题四、实验过程1. 斐波那契数列求解(1)问题描述:给定一个正整数n,求斐波那契数列的第n项。

(2)递归算法实现:```pythondef fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)```(3)分析:斐波那契数列递归算法的时间复杂度为O(2^n),空间复杂度为O(n)。

2. 汉诺塔问题(1)问题描述:有n个大小不同的盘子,初始放置在A柱子上,按照从小到大的顺序排列。

现要求将所有盘子移动到C柱子上,在移动过程中,每次只能移动一个盘子,且在移动过程中,大盘子不能放在小盘子上面。

(2)递归算法实现:```pythondef hanoi(n, source, target, auxiliary):if n == 1:print("Move disk 1 from", source, "to", target)returnhanoi(n-1, source, auxiliary, target)print("Move disk", n, "from", source, "to", target)hanoi(n-1, auxiliary, target, source)```(3)分析:汉诺塔递归算法的时间复杂度为O(2^n),空间复杂度为O(n)。

数据结构二叉树的递归算法实验报告

数据结构二叉树的递归算法实验报告

齐鲁工业大学实验报告成绩课程名称数据结构指导教师单健芳实验日期院(系)信息学院专业班级计科(嵌入)14-1 实验地点学生姓名高晨悦学号 201403071007 同组人无实验项目名称二叉树的递归算法一、实验目的和要求1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

二、实验环境微型计算机vc 6.0三、实验内容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

四、实验步骤一.实验内容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

二.程序的设计思想1实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

先构造二叉树,根据先序遍历的思想,输入根后,再输入左子树,直至左子树为空则输入上一层右字树。

(1)二叉树的非递归遍历是用显示栈来存储二叉树的结点指针,先序遍历时,按二叉树前序遍历的顺序访问结点,并将结点的指针入栈,直到栈顶指针指向结点的左指针域为空时取出栈顶指针并删除栈顶指针,访问刚取出的指针指向的结点的右指针指向的结点并将其指针入栈,如此反复执行则为非递归操作。

(2)二叉树的递归遍历:若二叉树为空,则空操作先序遍历:(a)访问根结点;(b)先序遍历左子树;(c)先序遍历右子树。

中序遍历:(a)中序遍历左子树;(b)访问根结点;(c)中序遍历右子树后序遍历:(a)后序遍历左子树;(b)后序遍历右子树;(c)访问根结点。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

(1)求二叉树的叶子结点个数:先分别求得左右子树中个叶子结点的个数,再计算出两者之和即为二叉树的叶子结点数。

(2)二叉树的结点个数之和:先分别求得左子树右子树中结点之和,再计算两者之和即为所求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

递归算法实验报告篇一:递归算法的设计和实现的实验报告班级学号姓名实验组别试验日期室温报告日期成绩报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:递归算法的设计和应用实验目的:1. 掌握递归算法的实现。

2. 实现递归算法的应用。

实验环境(硬/软件要求):Windows XX, Visual C++ 6.0实验内容:用递归算法实现前n个自然数的累加和与平均数【C语言源程序】#includeint Digui(int n)//设计递归算法功能为求前n个整数的和//{if(n==0)return 0;if(n==1)return 1;else return Digui(n-1)+n;}int main(){int n;printf("请输入n的值:\n");scanf("%d",&n);printf("计算结果为:\n%d\n",Digui(n));printf("这n个数的平均数是:\n%f\n",(float)Digui(n)/n);}篇二:数据结构- 递归算法实验报告实验报告实验五递归算法实验目的:1.熟悉递归算法的实现过程及实现机理;2.熟练并掌握递归算法的设计方法;3.了解递归算法到非递归算法的转换。

实验原理:高级程序语言函数调用原理;递归算法的设计方法。

实验内容:6-14 折半查找问题。

折半查找问题的描述见6.1节,折半查找问题的递归算法见例6-2。

要求:(1)设计折半查找问题的循环结构算法;(2)设计一个查找成功的例子和一个查找不成功的例子,并设计测试主程序;(3)设计一个包含10000个数据元素的查找成功的例子,然后分别调用循环结构的查找算法和递归结构的查找算法,并测试出两种算法在计算机上的实际运行时间。

实验结果:(1)折半查找问题的循环结构算法程序为:int Csearch(int test[],int x,int low,int high) {int i;for( i=0;i {if(x==test[i]) return i;else if(x>test[i])low=i+1;else high=i-1;}if(i>=high) return -1;}(2)①查找成功的例子:#includeint Csearch(int test[],int x,int low,int high) {int i;for( i=0;i {if(x==test[i]) return i;else if(x>test[i])low=i+1;else high=i-1;}if(i>=high) return -1;}int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};int x=6,flag ;int low=0,high=10;flag=Csearch(a,x,0,10);if(flag==-1) printf("searching is failed!\n"); else printf("searching is success!\n") ;printf("This program is made by 10273206\n"); }运行结果为:②查找失败的例子为:#includeint Csearch(int test[],int x,int low,int high) {int i;for( i=0;i {if(x==test[i]) return i;else if(x>test[i])low=i+1;else high=i-1;}if(i>=high) return -1;}int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};int x=11,flag ;int low=0,high=10;flag=Csearch(a,x,0,10);if(flag==-1) printf("searching is failed!\n"); else printf("searching is success!\n") ;printf("This program is made by 10273206\n"); }运行结果为:(3)程序为:#include#includeint Bsearch(int a[],int x,int low,int high) {int mid;if(low>high) return -1;mid=(low+high)/2;if(x==a[mid]) return mid;else if(x Bsearch(a,x,low,mid-1);elseBsearch(a,x,mid+1,high);}int Csearch(int test[],int x,int low,int high) {int i;for( i=0;i {if(x==test[i]) return i;else if(x>test[i])low=i+1;else high=i-1;}if(i>=high) return -1;}int main(){time_t start,end;double dif;int Bsearch(int a[],int x,int low,int high);int Csearch(int test[],int x,int low,int high);int a[10000],x,y,i,bn,flag;int low=0,high=10000,mid=0;printf("please enter number:\n");scanf("%ld",&x);for( i=0;i a[i]=i+1;time(&start);bn=Bsearch(a,x,0,10000);if(bn==-1) printf("%d is not in a !\n",x);else printf("%d is in a,suffix is %d\n",x,bn);time(&end);dif=difftime(end,start);printf("di gui method use time is:%f seconds\n",dif);time(&start);flag=Csearch(a,x,0,10000);if(flag==-1) printf("%ld is not in a !\n",x);else printf("%d is in a,suffix is %d\n",x,flag);time(&end);dif=difftime(end,start);printf("xun huan method use time is :%f seconds\n",dif);printf("This program is made by 10273206\n");}运行结果为:总结与思考通过实验我初步了解了递归算法到非递归算法的转换,递归算法在数据结构存储中用处很大。

同时,我也熟悉了递归算法的实现过程及实现机理,较熟练并掌握递归算法的设计方法。

篇三:数据结构二叉树的递归算法实验报告齐鲁工业大学实验报告成绩课程名称数据结构指导教师单健芳实验日期院(系)信息学院专业班级计科(嵌入)14-1 实验地点学生姓名高晨悦学号 XX03071007同组人无实验项目名称二叉树的递归算法一、实验目的和要求1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

二、实验环境微型计算机vc 6.0三、实验内容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

四、实验步骤一.实验内容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

二.程序的设计思想1实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

先构造二叉树,根据先序遍历的思想,输入根后,再输入左子树,直至左子树为空则输入上一层右字树。

(1)二叉树的非递归遍历是用显示栈来存储二叉树的结点指针,先序遍历时,按二叉树前序遍历的顺序访问结点,并将结点的指针入栈,直到栈顶指针指向结点的左指针域为空时取出栈顶指针并删除栈顶指针,访问刚取出的指针指向的结点的右指针指向的结点并将其指针入栈,如此反复执行则为非递归操作。

(2)二叉树的递归遍历:若二叉树为空,则空操作先序遍历:(a)访问根结点;(b)先序遍历左子树;(c)先序遍历右子树。

中序遍历:(a)中序遍历左子树;(b)访问根结点;(c)中序遍历右子树后序遍历:(a)后序遍历左子树;(b)后序遍历右子树;(c)访问根结点。

2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。

(1)求二叉树的叶子结点个数:先分别求得左右子树中个叶子结点的个数,再计算出两者之和即为二叉树的叶子结点数。

(2)二叉树的结点个数之和:先分别求得左子树右子树中结点之和,再计算两者之和即为所求。

(3)二叉树的高度:首先判断二叉树是否为空,若为空则此二叉树高度为0,。

否则,就先分别求出左右子树的深度进行比较,取较大的树加一即为所求。

(4)二叉树的度为2的结点个数:计算有左右孩子的结点个数,即为度为2的结点个数。

三.编程过程中遇到的问题及解决办法(1)后续遍历的非递归函数涉及到回溯的方法,开始设计的方案想的太过于简单,所以形成了死循环,总是在最后的节点处不停地循环,后改成回溯后,该问题得到解决。

(2)计算二叉树中度为2的结点个数中,返回循环的时候不论根结点有没有左右子树,但个人设计时,根总是会将自己默认为有左右子树,自行增加1.后在同学帮助下才看到自己的这个失误。

四.程序的闪光点(自我评价)1.程序模块化,各个函数分开描述,方便观察2.关键处有注释3.建立二叉树时,用先序提示输入,比较人性化。

五.程序源代码(以文件为单位提供)#include#include#define Maxsize 100typedef struct TREE{struct TREE *lTree;char data;}Tree;void InitTree(Tree*);//初始化树void CreatTree(Tree*);//创建二叉树void PreTraverse(Tree*);//先序遍历递归void PreOrderTraverse(Tree*);//先序遍历非递归void InTraverse(Tree *tree);//中序遍历递归void InOrderTraverse(Tree *tree);//中序遍历非递归void PostTraverse(Tree *tree);//后序遍历递归void LastOrderTraverse(Tree *tree);//后序遍历非递归int DepthTree(Tree *tree);//计算树的深度int LeafsTree(Tree *tree);//计算叶子结点个数int NodesTree(Tree *tree);//计算结点个数int Twochild(Tree*tree);//计算度为二的结点个数void main(){int H,L; Tree tree;// Tree m;InitTree(&tree); CreatTree(&tree); cout cout InTraverse(&tree);//中序遍历递归InOrderTraverse(&tree);//中序遍历非递归cout cout H=DepthTree(&tree);cout cout }void InitTree(Tree *tree)//初始化树{}void CreatTree(Tree *tree)//创建树{int n=0,m=0,i=0; tree->lTree=NULL; tree->rTree=NULL; tree->data='0'; cout{} coutdata>tree->data; cin>>n;if(n==1){Tree *lTree=(Tree*)malloc(sizeof(Tree));tree->lTree=lTree;lTree->lTree=NULL;lTree->rTree=NULL;lTree->data='0';CreatTree(tree->lTree);coutdata>i;if(i==0);else if(i==1){Tree *rTree=(Tree*)malloc(sizeof(Tree)); tree->rTree=rTree;rTree->lTree=NULL;rTree->rTree=NULL;rTree->data='0';CreatTree(tree->rTree);}}else if(n==0) :有):"; 1。

相关文档
最新文档