【发布时间】:2017-10-26 12:44:06
【问题描述】:
我需要遍历 n 元素的数组(因此是动态大小),例如 4,就好像它是一个二进制数一样,从全零 ({0,0,0,0}) 开始。每次需要像二进制一样递增时,{0,0,0,0} -> {0,0,0,1} -> {0,0,1,0} -> {0,0,1,1} -> {0,1,0,0},等等...
我在生成使用数组值的算法时遇到了麻烦,我考虑过使用递归,但除了在 ifs 中进行硬编码之外找不到这样做的方法。我想我可以生成一个n-digit 数字,然后应用this post 中讨论的任何算法,但这很不优雅;当我需要使用数组时,OP 要求打印 n 位数字。
如果有人能指出我正确的方向,那就太好了。
背景:
int n;
scans("%d", &n);
int *arr = calloc(n, sizeof(int));
【问题讨论】:
-
我想这取决于你的出发点是什么,以及你想如何迭代。例如,您是增加一个 int 然后将其转换为您需要的输出,还是需要“解析”数组以找到当前值然后增加它?
-
@Neil 我对你的意思感到困惑 :) 每次对数组进行重组(以二进制增量方式)我调用一个使用该数组中的值的函数,认为这些工作是不必要的对于这篇文章)
标签: c arrays loops recursion binary