* Xcode中完成
递归(recursion):程序调用自身的编程技巧。
递归满足2个条件:
1)有反复执行的过程(调用自身)
2)有跳出反复执行过程的条件(递归出口)
例子:
(1) 阶乘:
n! = n * (n-1) * (n-2) * ...* 1(n>0)
int recursion(int value) {
if(value ==0) {
return 1;
}else if(value >0) {
return value * recursion(value -1);
}else {
return 0;
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSLog(@"3!=%d",recursion(3));
}
return 0;
}
(2) 全排列
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
如1,2,3三个元素的全排列为:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
#import <Foundation/Foundation.h>
//交换函数
void swap( int *a , int *b)
{
int temp ;
temp = *a;
*a=*b;
*b=temp;
}
//排列函数
void perm(int list[], int begin, int k,int m)
{
if (k == m) {
for (int i = begin;i<=m; i++) {
printf