万花筒的初始形状如下图所示,其中的圆圈代表万花筒的闪烁点,每旋转一次万花筒形状就演变一次,演变的规则是在末端再生出同样的形状,要求写出递归模型并设计递归和非递归算法求第 n 次旋转后有多少个闪烁点?(用C++实现)
时间: 2024-05-02 08:21:13 浏览: 136
C++实现万花筒
递归模型:
设 $f(n)$ 表示第 $n$ 次旋转后的闪烁点数,则有:
$$
f(n)=3f(n-1)
$$
初始条件为 $f(0)=1$。
递归算法:
```c
int f(int n){
if(n == 0) return 1;
return 3 * f(n - 1);
}
```
非递归算法:
```c
int f(int n){
int res = 1;
for(int i = 1; i <= n; i++){
res *= 3;
}
return res;
}
```
阅读全文