我有这个密码问题,我想更改它以便它使用递归。我想把这里的 for 循环换成递归调用。这最好在一个单独的 void 函数中完成,该函数可以在 main 中再次调用。我知道递归并不总是最好的方法,所以我也对方法感兴趣。
int main() {
char str1[100] = "Test...";
char pos;
int i;
int shift = 1;
for (i = 0; str1[i] != '\0'; ++i) {
pos = str1[i];
if (pos >= 'a' && pos <= 'z') {
if (pos % 2 == 0) {
pos = pos + shift;
if (pos > 'z') {
pos = pos - 'z' + 'a' - 1;
}
if (pos < 'a') {
pos = pos - 'a' + 'z' + 1;
}
str1[i] = pos;
}
else if (pos % 2 != 0) {
pos = pos - shift;
if (pos > 'z') {
pos = pos - 'z' + 'a' - 1;
}
if (pos < 'a') {
pos = pos - 'a' + 'z' + 1;
}
str1[i] = pos;
}
}
}
printf("Encrypted message: %s", str1);
return 0;
}
C 和一般编程的超级新手,所以如果有任何代码看起来很低级,我深表歉意,我只是想了解递归背后的数学。