调用函数加循环,有空请看看

img


#include
int A(int n);
int main(void)
{
int n,i,a,sum = 0,mi = 1,mm;
scanf("%d",&mm);
do{
mi++;
printf("Input :\n");
scanf("%d",&n);
getchar();
a = n;
for(i;i < a;i++)
{
sum = sum+A(n);
n--;
}
printf("a = %d\nmi = %d\nn = %d\nsum = %d\ni = %d\n",a,mi,n,sum,i);
}while(mi <= mm);
}
int A(int n)
{
if(n%2 == 1)
{
return n;
}
else
{
return A(n/2);
}
}
请问输出的sum与i的值咋没变呢


#include <stdio.h>
int A(int n, int i);
int main(void)
{
    int n, a, sum = 0, mi = 1, mm;
    scanf("%d", &mm);
    do
    {
        mi++;
        printf("Input :\n");
        scanf("%d", &n);
        getchar();
        a = n;
        sum = 0;
        while (n > 0) // for (i = 1; i <= a; i++)//
        {
            sum = sum + A(n, n);
            n--;
        }
        printf("a = %d\nmi = %d\nn = %d\nsum = %d\n", a, mi, n, sum);
    } while (mi <= mm);
}
int A(int n, int i)
{
    if (i == 1)
        return 1;
    if (n % i == 0)        //余数为0说明是因子
        if (i % 2 == 1) //因子为奇数
        {
            return i;
        }
    return A(n, --i);
}

贴代码用代码块

img

请用 ‘代码块’ 来展示你的代码,要有正常的缩进格式