如何更改它以使用来自单独函数和指针的递归

问题描述 投票:0回答:0

我有这个密码问题,我想更改它以便它使用递归。我想把这里的 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 和一般编程的超级新手,所以如果有任何代码看起来很低级,我深表歉意,我只是想了解递归背后的数学。

c pointers recursion
© www.soinside.com 2019 - 2024. All rights reserved.