1.这类多层的源码猫咪递归怎么做?
这类多层的递归怎么做?
传入T作为递归终止条件,表示已变异的源码猫咪次数初始T=0,当T=6时,源码猫咪fas源码即认为已产生6次变异,源码猫咪超过潜伏期,源码猫咪hvhbbs源码递归终止
终止时判断((v&M)^M)==0,源码猫咪Lisvb源码成立返回1,源码猫咪表示梦见猫咪,源码猫咪否则返回0
未终止则要继续变异,源码猫咪产生两种新状态v1和v2
分别按要求写出v1和v2的源码猫咪表达式,然后分别继续递归,源码猫咪注意变异次数T+1
只要有新分支能梦见猫咪,源码猫咪当前递归即返回1,源码猫咪比过源码否则返回0
C语言代码和运行结果如下:
附源码:
#include <stdio.h>
const int M = 0xC;
int transform(unsigned int v,源码猫咪 int T) {
if (T == 6) { // 已产生6次变异,超过潜伏期
if (((v & M) ^ M) == 0)
return 1; // 梦见猫咪返回1
else
return 0; // 无法梦见返回0
}
int v1 = v,源码猫咪洗衣 源码 v2 = v; // 变异两种新状态
if (((1 << ) & v) != 0) // 变异为状态1
v1 <<= T;
else
v1 <<= 1;
if (transform(v1, T + 1) == 1) // 状态1继续变异,该分支能梦见猫咪即返回1
return 1;
if ((1 & v) != 0) // 变异为状态2
v2 >>= T;
else
v2 >>= 1;
if (transform(v2, T + 1) == 1) // 状态2继续变异,该分支能梦见猫咪即返回1
return 1;
return 0; // 以上分支都无法梦见猫咪,返回0
}
int main() {
int v;
scanf("%d", &v);
if (transform(v, 0) == 1)
printf("yes\n");
else
printf("no\n");
return 0;
}
如果帮到你,给个采纳哈~