C言語を勉強している初心者です。
再帰についての質問です。
下記のコードはintで与えられた数字を、与えられた関数のみを使って、表示するというコードです。
下記の書き方だと、
ft_putchar((nb % 10) + '0');
の部分を一度通ると、ループが終了し、main関数に戻って、一番上の桁だけを出力して、処理が終了されると思うのですが、
ft_putchar((nb % 10) + '0');
を経由した後も、再び、ft_putchar((nb % 10) + '0');が実行されています。
コードの一番下に再帰の処理が書かれているわけでもないのに、最終行を通ってからまた、ループしている理由がわかりません。
アドバイスいただけましたら幸いです。
c
1#include <unistd.h> 2// 検証のために追記 3#include <stdio.h> 4 5void ft_putchar(char c) { write(1, &c, 1); } 6 7// 検証のために追記 8static int i = 0; 9 10void ft_putnbr(int nb) 11{ 12 if (nb < 0){ 13 ft_putchar('-'); 14 ft_putnbr(nb * (-1)); 15 } else { 16 if (nb >= 10){ 17 ft_putnbr(nb / 10); 18 } 19 ft_putchar((nb % 10) + '0'); 20 } 21 // 検証のために追記 22 printf("終わりました:%d\n", ++i); 23} 24 25int main() 26{ 27 int a; 28 a = 12; 29 ft_putnbr(a); 30 return (0); 31} 32
出力結果
terminal
11終わりました:1 22終わりました:2
回答3件
あなたの回答
tips
プレビュー