看板 C_and_CPP 關於我們 聯絡資訊
tonyhcc:我的想法是當 n=1 只有兩種情0和1 n=2 就是遞迴去呼叫09/26 03:53
tonyhcc:n=1 的情形加以組合09/26 03:54
tony大的方式我有想過 #include <stdio.h> #include <stdlib.h> void recursive(char *ch, int n, int i, char bit); int count = 0; int main() { char *ch; int n; scanf("%d", &n); ch = (char* )malloc(sizeof(char)*n); recursive(ch, n, n, '0'); recursive(ch, n, n, '1'); printf("%d\n", count); return 0 ; } void recursive(char *str, int n, int i, char bit) { if ( i == 0) { printf("%s\n", str); count++; } else { *(str +n-i) = bit; recursive(str, n, i-1, '0'); recursive(str, n, i-1, '1'); } } 這樣有兩個問題(或三個) 第一個 當要印出來的時候else裡有兩個recursive的呼叫 所以每一種結果都會印兩次 我不知道怎麼修掉=.= 再來的問題就是 遞迴的精神不就是main裡面叫一次遞迴就可以直接解決問題的嗎? 我用了兩次(0、1) 好像不對...... 另外一個問題就是我怕老師會說我這不是用排列的 而是用產生的 下個禮拜還要去問助教可不可以... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.63.167
cutecpu:http://codepad.org/9TrS6ue3 應該有解決前 2 個問題 09/26 11:03
cutecpu:不過突然發現, malloc size 應該等於 sizeof(char)*n+1 09/26 11:07
cutecpu:然後記得補 0 => ch[n]=0; 09/26 11:08
reon:用shift 可以嗎 XD 09/26 13:13
liu2007:不懂,為什麼size會 = n+1 ?? 另外ch[n] = '0'要加在哪 09/26 13:43
liu2007:裡呢? 09/26 13:43