我的功能在调试方面很好,但不是主要的
我必须制作一个像123 - > 321带递归 当我通过调试器看到我的功能的工作时,我会看到一个变化,但是当我在MAIN上调用功能时,什么都没有改变 这是我的代码,
#include <stdio.h>
#include <math.h>
long int SwapNum(long int , int);
int CountRoz(long int);
int main(){
long int a = 123;
printf("%ld", a);
SwapNum(a, CountRoz(a));
printf("%ld", a);
}
int CountRoz(long int a) {
if (a / 10 == 0)
return 1;
return 1 + CountRoz(a / 10);
}
long int SwapNum(long int a, int b) {
a +=a % 10 * pow(10, 2 * b - 1);
if (b == 1) {
return 1;
}
b--;
return SwapNum(a / 10, b);
}
您可以帮助我,因为我找不到错误
I have to make a func that do somtheing like this 123 -> 321 with recursion
When i see work of my func via debugger i see that a changed, but when i call function on main, nothing changed
This is my code
#include <stdio.h>
#include <math.h>
long int SwapNum(long int , int);
int CountRoz(long int);
int main(){
long int a = 123;
printf("%ld", a);
SwapNum(a, CountRoz(a));
printf("%ld", a);
}
int CountRoz(long int a) {
if (a / 10 == 0)
return 1;
return 1 + CountRoz(a / 10);
}
long int SwapNum(long int a, int b) {
a +=a % 10 * pow(10, 2 * b - 1);
if (b == 1) {
return 1;
}
b--;
return SwapNum(a / 10, b);
}
Can you help me, because I cant find error
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您也可以尝试通过引用传递,尽管我不确定您的算法是否完全正确。
因此,模量运算符可能是您在Swapnum中的第一行中尝试的。 123%10的剩余123除以10。
请记住,整数数学将产生整数; 12/10产生1。
假设我们以:
我们像您计划的那样,通过除以10和
来遍历数字
还可以通过乘以10(加上剩余的)来建立返回值
希望这会有所帮助!
ron。
You can also try passing by reference although I'm not sure your algorithm is exactly right.
So, the modulus operator is probably what you're trying for in your first line in Swapnum. 123 % 10 yields the remainder of 123 divided by 10.
And remember, integer math will yield integers; 12/10 yields 1.
Let's say we start with:
We traverse digits in A like you planned by dividing by 10 and
also build up the return value by multiplying by 10 (plus remainder)
Hope this helps!
Ron.