我如何将这个函数转换成更好的循环?

How do I transform this function into something better like a loop?

所以我的问题出在 CS50 哈佛课程第 1 周的 problem set 1 中。任务是编写一个程序,计算找零时可能的最小硬币数量。我已经编写了程序并且可以运行,但我想知道你们是否可以告诉我如何进一步改进我计算硬币数量的功能。它基本上是复制和粘贴 4 次相同的代码行,只是更改其中的硬币值(25、10、5、1)。谁能帮我把它变成某种循环,因为虽然复制和粘贴有效,但对我来说看起来有点糟糕。

int calculate_coins(int change)
{
    //Count coins from 0
    int n = 0;

    //How much 25s can be used? 
    n += change / 25;
    //Calculate remaining change
    change %= 25;

    n += change / 10;
    change %= 10;

    n += change / 5;
    change %= 5;

    n += change / 1;
    change %= 1;

    return n;
}

如果我想在其他任何地方使用它,我会将该数组设置为全局数组。除此之外我同意。

int value[] = { 25, 10, 5, 1 }; //global array

int calculate_coins(int change)
{
    for (int i = 0; i < 4; i++) 
    {
        n += change / value[i];
        change %= value[i];
    }

    return n;
}