对指针类型的一个总结:

1)int *p:p为指向整型变量的指针。

2)int *p[4]:p是由4个指向整型变量组成的数组。

3)int (*p)[4]:p是指向含4个元素的一维数组的指针。

4)int *p():p是返回值为指针的函数,指针指向整型变量。

5)int (*p)():p是指向函数的指针,函数返回一个整型变量。

6)int **p:p是指向一级指针的指针。

 

 

显然这个问题分为2个情况,即装上和卸下第n个环2种情况。而且每种情况都需要装上和卸下前n-1个环,举个例子,要装上第3个环,就要先装上第一个环,然后装上第2个,卸下第一个,装上第3个,再卸下第2个。所以我们可以反过来看这个过程(方便写递归)要装上第n个环,就要卸掉第n-2个,装上第n-1个,直到n<=1(递归出口),故代码如下: